Memahami Gelagat Penyalinan Tolak_Balik Vektor
Semasa bekerja dengan vektor, pembangun sering menghadapi pertanyaan mengenai kekerapan seruan pembina salinan semasa operasi tolak_balik. Mari kita mendalami tingkah laku ini dengan contoh:
Pertimbangkan kod C berikut:
<code class="cpp">class Myint { int my_int; public: Myint() : my_int(0) { cout << "Inside default" << endl; } Myint(const Myint& x) : my_int(x.my_int) { cout << "Inside copy with my_int = " << x.my_int << endl; } }; int main() { vector<Myint> myints; Myint x; myints.push_back(x); x.set(1); myints.push_back(x); }</code>
Coretan ini dijangka mencetuskan pembina salinan dua kali semasa operasi push_back. Walau bagaimanapun, selepas pelaksanaan, kami melihat output berikut:
Inside default Inside copy with my_int = 0 Inside copy with my_int = 0 Inside copy with my_int = 1
Mengapakah pembina salinan kelihatan dipanggil tiga kali?
Oleh itu, secara keseluruhan, pembina salinan dipanggil tiga kali. Untuk mengoptimumkan tingkah laku ini:
Atas ialah kandungan terperinci Berapa Kali Pembina Salin Dipanggil Semasa Operasi `push_back` dalam Vektor C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!