Pertanyaan yang diberi tag «move-semantics»

12
Apa itu semantik bergerak?
Saya baru saja selesai mendengarkan wawancara podcast radio Rekayasa Perangkat Lunak dengan Scott Meyers mengenai C ++ 0x . Sebagian besar fitur baru masuk akal bagi saya, dan saya benar-benar bersemangat tentang C ++ 0x sekarang, dengan pengecualian satu. Saya masih tidak bisa bergerak semantik ... Apa itu sebenarnya?

7
push_back vs emplace_back
Saya agak bingung tentang perbedaan antara push_backdan emplace_back. void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); Karena ada push_backkelebihan mengambil referensi nilai saya tidak cukup melihat apa tujuan emplace_backmenjadi?


6
Nilai C ++ 11 dan memindahkan kebingungan semantik (pernyataan pengembalian)
Saya mencoba memahami referensi nilai dan memindahkan semantik C ++ 11. Apa perbedaan antara contoh-contoh ini, dan mana di antara mereka yang tidak memiliki salinan vektor? Contoh pertama std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); Contoh kedua std::vector<int>&& return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return …

3
Apa itu "referensi nilai untuk * ini"?
Datang di proposal yang disebut "referensi nilai untuk * ini" di halaman status C ++ 11 dentang . Saya sudah membaca sedikit tentang rvalue referensi dan memahaminya, tapi saya rasa saya tidak tahu tentang ini. Saya juga tidak dapat menemukan banyak sumber daya di web menggunakan istilah tersebut. Ada tautan …

2
Bisakah C ++ modern memberi Anda kinerja gratis?
Kadang-kadang diklaim bahwa C ++ 11/14 dapat membuat Anda meningkatkan kinerja bahkan ketika hanya mengkompilasi kode C ++ 98. Pembenaran biasanya sepanjang garis semantik bergerak, karena dalam beberapa kasus pembangun nilai secara otomatis dihasilkan atau sekarang bagian dari STL. Sekarang saya bertanya-tanya apakah kasus-kasus ini sebelumnya sebenarnya sudah ditangani oleh …

6
Mengapa saya std :: memindahkan std :: shared_ptr?
Saya telah mencari melalui kode sumber Dentang dan saya menemukan potongan ini: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Mengapa saya ingin std::movesebuah std::shared_ptr? Apakah ada titik mentransfer kepemilikan pada sumber daya bersama? Kenapa aku tidak melakukan ini saja? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = Value; }


6
Bagaimana cara menggunakan deleter khusus dengan anggota std :: unique_ptr?
Saya memiliki kelas dengan anggota unique_ptr. class Foo { private: std::unique_ptr<Bar> bar; ... }; Bilah adalah kelas pihak ketiga yang memiliki fungsi create () dan fungsi destroy (). Jika saya ingin menggunakan std::unique_ptrdengan itu dalam fungsi yang berdiri sendiri yang bisa saya lakukan: void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* …


4
Kapan membuat tipe tidak dapat dipindahkan di C ++ 11?
Saya terkejut ini tidak muncul di hasil pencarian saya, saya pikir seseorang akan menanyakan ini sebelumnya, mengingat kegunaan semantik bergerak di C ++ 11: Kapan saya harus (atau apakah sebaiknya saya) membuat kelas tidak dapat dipindahkan di C ++ 11? (Alasan lain selain masalah kompatibilitas dengan kode yang ada, yaitu.)

1
Tidak dapat keluar dari konten pinjaman / tidak dapat keluar dari referensi bersama
Saya tidak mengerti kesalahannya cannot move out of borrowed content. Saya telah menerimanya berkali-kali dan saya selalu menyelesaikannya, tetapi saya tidak pernah mengerti mengapa. Sebagai contoh: for line in self.xslg_file.iter() { self.buffer.clear(); for current_char in line.into_bytes().iter() { self.buffer.push(*current_char as char); } println!("{}", line); } menghasilkan kesalahan: error[E0507]: cannot move out …


3
Apa keuntungan menggunakan referensi penerusan dalam loop berbasis rentang?
const auto&sudah cukup jika saya ingin melakukan operasi hanya-baca. Namun, saya telah bertemu for (auto&& e : v) // v is non-const beberapa kali baru-baru ini. Ini membuat saya bertanya-tanya: Mungkinkah dalam beberapa kasus sudut yang tidak jelas ada beberapa manfaat kinerja dalam menggunakan referensi penerusan, dibandingkan dengan auto&atau const …

2
Bagaimana std :: move () mentransfer nilai ke RValues?
Saya baru saja menemukan diri saya tidak sepenuhnya memahami logika std::move(). Awalnya saya googling di Google tapi sepertinya hanya ada dokumen tentang cara penggunaan std::move(), bukan cara kerja strukturnya. Maksud saya, saya tahu apa itu fungsi anggota template tetapi ketika saya melihat std::move()definisi di VS2010, itu masih membingungkan. definisi dari …

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.