Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah std::vector Menyalin Objek pada Push_back()?

Adakah std::vector Menyalin Objek pada Push_back()?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 04:44:01412semak imbas

Does std::vector Copy Objects on Push_back()?

Adakah std::vector Menyalin Objek pada push_back()?

Susulan penyiasatan menggunakan Valgrind, pengguna membuat kesimpulan bahawa std::vector mencipta salinan objek apabila melakukan push_back(). Ini menimbulkan persoalan:

Tidak boleh std::vector Store Rujukan atau Penunjuk Tanpa Menyalin?

Malangnya, jawapannya adalah afirmatif. std::vector::push_back(), seperti yang direka, mencipta salinan objek yang diluluskan sebagai hujah dan menyimpannya dalam vektor.

Alternatif untuk Elakkan Menyalin:

Jika tingkah laku yang diingini adalah untuk menyimpan penunjuk atau rujukan dan bukannya salinan, pertimbangkan untuk menggunakan std::vector atau std::vector>.

Awas:

Apabila menggunakan penunjuk atau rujukan, pastikan objek yang dirujuk kekal sah sepanjang hayat vektor. Menggunakan petunjuk pintar yang menggunakan Pemerolehan Sumber Adalah Permulaan (RAII) boleh menangani isu ini dengan berkesan.

Atas ialah kandungan terperinci Adakah std::vector Menyalin Objek pada Push_back()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn