Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah `std::vector::push_back()` Menyalin Objek?

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

DDD
DDDasal
2024-11-03 18:51:29596semak imbas

Does `std::vector::push_back()` Copy Objects?

Adakah std::vector Menyalin Objek dengan push_back?

Selepas menjalankan penyiasatan meluas menggunakan Valgrind, telah dicadangkan bahawa std::vector mencipta salinan mana-mana objek yang ditolak semula ke dalam vektor. Adakah dakwaan ini tepat? Bolehkah vektor tidak mengekalkan rujukan atau penunjuk kepada objek tanpa menyalinnya?

Jawapan:

Ya, std::vector::push_back() memang mencipta salinan hujah yang dibekalkan dan menambahkannya pada vektor. Jika anda berhasrat untuk menyimpan penunjuk kepada objek dalam vektor, gunakan std::vector bukannya std::vector.

Walau bagaimanapun, anda mesti menjamin bahawa objek yang dirujuk oleh penunjuk kekal sah sementara vektor mengekalkan rujukan kepada mereka. Petunjuk pintar berdasarkan simpulan bahasa RAII menawarkan penyelesaian kepada masalah ini.

Atas ialah kandungan terperinci Adakah `std::vector::push_back()` Menyalin Objek?. 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