Menguatkuasakan Semantik Pergerakan Semasa Pertumbuhan Vektor
Apabila std::vektor dengan elemen bukan remeh yang mempunyai pembina salinan dan gerakkan yang ditentukan berkembang, tingkah laku lalai adalah menggunakan pembina salinan untuk mencipta salinan elemen baharu. Untuk menguatkuasakan penggunaan pembina bergerak sebaliknya, C mesti dimaklumkan bahawa pembina ini tidak membuang pengecualian.
Pelaksanaan
Untuk menunjukkan bahawa pembina bergerak boleh dipanggil dengan selamat, isytiharkannya dengan penentu noexcept:
A(A &&rhs) noexcept { std::cout << "i am the move constr" << std::endl; ... move-assignment code ... }
Dengan pengubahsuaian ini, std::vector akan mengutamakan penggunaan pembina langkah untuk pertumbuhan, memastikan sumber elemen sedia ada dipindahkan dan bukannya disalin.
Maklumat Tambahan
Atas ialah kandungan terperinci Bagaimana Saya Boleh Memaksa std::vector untuk Menggunakan Move Semantics Semasa Pertumbuhan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!