Pertanyaan yang ditandai dengan 'copy-and-swap'

Ungkapan bertukar salinan dalam C ++ dapat digunakan untuk menyederhanakan implementasi operator penugasan, menggunakan copy constructor untuk membuat salinan lokal dan menggantinya dengan objek saat ini.
5
balasan

Apa itu idiom copy and swap?

Apa idiom ini dan kapan harus digunakan? Masalah apa yang dia pecahkan? Apakah idiom berubah dengan C ++ 11? Meskipun disebutkan di banyak tempat, kami tidak memiliki pertanyaan dan jawaban "apa ini" khusus, jadi ini dia. Ini tidak lengkap ...
Ditetapkan pada 19 Juli '10 pukul 11:42
2
balasan

fungsi pertukaran teman publik

Dalam jawaban yang sangat baik copy-and-swap-idiom ada sepotong kode, saya butuh sedikit bantuan: class dumb_array {public: // ... friend void swap (dumb_array first, dumb_array first) // nothrow {using std :: swap; swap (pertama ...
ditetapkan pada 17 April '11 pada jam 21:35
4
balasan

Mengapa beberapa orang menggunakan swap untuk mengalihkan?

Sebagai contoh, stdlibС ++ memiliki yang berikut: unique_lock operator = (unique_lock __u) {if (_M_owns) membuka kunci (); unique_lock (std :: move (__ u)). swap (* this); __u._M_device = 0; __u._M_owns = false; kembali * ini; } Kenapa ...
ditetapkan pada 14 Juli '11 pukul 4:03
3
balasan

Apa itu penyalinan dan bagaimana cara mengoptimalkan idiom copy dan swap?

Saya membaca Salin dan Tukar. Saya mencoba membaca beberapa tautan ke Copy Elision, tetapi saya tidak mengerti apa artinya ini. Dapatkah seseorang menjelaskan apa itu optimasi, dan terutama apa arti teks berikutnya.Ini bukan hanya masalah kenyamanan, tetapi fakta ...
ditetapkan pada 27 Januari '10 jam 3:37
3
balasan

Jika Idiom dengan salin dan ubah menjadi Idiom Copy-and-Move di C ++ 11?

Seperti dijelaskan dalam jawaban ini, idiom copy dan swap diimplementasikan sebagai berikut: class MyClass {private: BigClass data; UnmovableClass * dataPtr; publik: MyClass (): data (), dataPtr (new UnmovableClass) {} MyClass (con ...
ditetapkan pada 03 Juni '14 pada 14:33
2
balasan

Salin dan pindahkan idiom?

Menggunakan Copy dan Swap, kita dapat dengan mudah mengimplementasikan tujuan penyalinan dengan keamanan yang andal: T operator = (T other) {using std :: swap; swap (* ini, lainnya); kembali * ini; } Namun, ini membutuhkan T agar Swappable. Apa yang ...
diatur pada 12 April '17 pada 14:35
1
jawabannya

Kapan kelebihan beban mengikuti tautan (nilai-l dan nilai-r) yang disukai untuk transmisi menurut nilai?

Saya melihat bahwa dia mengatakan bahwa operator =, ditulis untuk mengambil parameter dari tipe yang sama dengan nilai, berfungsi sebagai operator penugasan salin dan operator penugasan perpindahan tugas di C ++ 11: Foo operator = (Foo f) {swap ( f); kembali * ...
ditetapkan pada 18 Agustus '13 pada 23:22
3
balasan

Tugas pemindahan tidak kompatibel dengan penyalinan dan pertukaran standar

Menguji semantik baru dari Pindahkan. Saya hanya bertanya tentang masalah yang saya miliki dengan Move Constructor. Tapi, seperti yang muncul di komentar, masalahnya adalah bahwa operator "Penugasan gerak" dan operator "Penugasan standar" menghadapi ...
ditetapkan pada 07 November '13 pukul 19:41
2
balasan

Mengapa std :: vector memiliki dua operator penugasan?

Sejak 2011, kami telah menyalin dan memindahkan. Namun, jawaban ini cukup meyakinkan membuktikan bahwa kelas manajemen sumber daya hanya membutuhkan satu operator penugasan.
ditetapkan pada 21 November '15 jam 2:01
2
balasan

Bagaimana cara menggunakan noexcept dalam pernyataan penugasan dengan idiom copy dan swap?

Operator yang bertransisi seringkali harus dinyatakan noeksepsi (mis., Simpan jenisnya dalam wadah STL). Tetapi idiom "salin dan tukar" memungkinkan Anda untuk mendefinisikan operator penugasan dan memindahkan operasi dalam satu fragmen kode. Apa yang ...
aktifkan 17 september. '13 pada 14:07
2
balasan

Ketika idiom menyalin dan bertukar tidak didukung

Setelah membaca tentang idiom penyalinan dan swapping, saya membaca ini, yang berbunyi: (2): class_name class_name :: operator = (const class_name (2) (2) Pernyataan khas operator penugasan salinan ketika ...
ditetapkan pada 16 November '15 jam 2:59 siang
6
balasan

gunakan kembali idiom, salin dan tukar

Saya mencoba untuk menempatkan idiom copy-dan-swap ke dalam mixin yang dapat digunakan kembali: template <typename Derived> struct copy_and_swap {Berasal operator = (Berasal salinan) {Berasal * diturunkan = static_cast <Berasal *> (ini); diturunkan-> s ...
Set 16 Agustus '11 jam 17:48
3
balasan

Inefisiensi menyalin dan bertukar idiom?

Saya menguji beberapa kode yang memiliki item data std :: vector di dalam kelas. Kelasnya adalah mobile dan mobile, dan operator = diimplementasikan seperti yang dijelaskan di sini menggunakan idiom dan. Jika ada dua vektor s, ucapkan v1 dengan besar ...
atur 03 Maret '13 pada 20:03
3
balasan

Penugasan dan idiom aman "salin dan tukar"

Saya belajar C ++, dan baru-baru ini saya menemukan (di sini di stack overflow) tentang idiom dengan menyalin dan mengganti, dan saya punya beberapa pertanyaan tentang hal itu. Jadi, anggaplah saya memiliki kelas berikut, menggunakan idiom dengan salin dan ganti, misalnya: kelas Foo {p ...
ditetapkan pada 06 Mei 11 jam 3:25
2
balasan

Apa aturan empat (setengah)?

Untuk pemrosesan yang tepat dari objek penyalinan, aturan praktisnya adalah Aturan Tiga. Dengan C ++ 11, memindahkan semantik adalah sesuatu, jadi alih-alih, Aturan Lima. Namun, dalam diskusi di sekitar sini dan di Internet, saya juga melihat referensi Chet's Rule ...
ditetapkan pada 18 Agustus '17 jam 13:17