Jawaban langsung:
Kita bisa menggunakan fungsi anggota publik std::vector::operator=
wadah std::vector
untuk menetapkan nilai dari vektor ke yang lain.
- Gunakan fungsi konstruktor
Selain itu, fungsi konstruktor juga masuk akal. Fungsi konstruktor dengan vektor lain sebagai parameter (misalnya x
) membuat wadah dengan salinan setiap elemen dix
, dalam urutan yang sama.
Peringatan:
- Jangan gunakan
std::vector::swap
std::vector::swap
tidak menyalin vektor ke vektor lain, ia sebenarnya menukar elemen dari dua vektor, seperti namanya. Dengan kata lain, vektor sumber untuk menyalin dari diubah setelah std::vector::swap
disebut, yang mungkin bukan yang Anda harapkan.
- Salinan dalam atau dangkal?
Jika elemen-elemen dalam vektor sumber menunjuk ke data lain, maka salinan yang dalam kadang-kadang dibutuhkan.
Menurut wikipedia:
Salinan yang dalam, artinya bidang yang ditinjau kembali: alih-alih referensi ke objek yang disalin, objek salinan baru dibuat untuk objek yang dirujuk, dan referensi ke ini ditempatkan di B.
Sebenarnya, saat ini tidak ada cara bawaan di C ++ untuk menyalin secara mendalam. Semua cara yang disebutkan di atas dangkal. Jika salinan yang dalam diperlukan, Anda dapat melintasi vektor dan membuat salinan referensi secara manual. Atau, iterator dapat dipertimbangkan untuk dilintasi. Diskusi tentang iterator berada di luar pertanyaan ini.
Referensi
Halaman std::vector
di cplusplus.com