Terdapat tiga cara untuk menyalin bekas C++ STL: Gunakan pembina salinan untuk menyalin kandungan bekas ke bekas baharu. Gunakan pengendali tugasan untuk menyalin kandungan bekas ke bekas sasaran. Gunakan algoritma std::copy untuk menyalin elemen dalam bekas.
Cara menyalin bekas C++ STL
Preface
C++ Standard Template Library (STL) menyediakan satu siri kelas kontena untuk menyimpan dan mengurus data. Menyalin bekas ini selalunya penting, contohnya, apabila kita perlu menambah elemen pada bekas lain, atau apabila kita perlu mengekalkan kandungan bekas sebelum menghantar argumen kepada fungsi.
Gunakan pembina salinan
Bekas STL menyediakan pembina salinan, yang menyalin kandungan bekas ke bekas baharu. Sintaks pembina salinan adalah seperti berikut:
std::vector<int> v1{1, 2, 3}; std::vector<int> v2(v1); // 复制 v1 到 v2
Menggunakan operator tugasan
Pengendali tugasan (=) juga boleh digunakan untuk menyalin bekas. Pengendali tugasan menyalin kandungan bekas sumber ke bekas sasaran, membuang sebarang unsur sedia ada dalam bekas sasaran. Sintaks pengendali tugasan adalah seperti berikut:
std::vector<int> v1{1, 2, 3}; std::vector<int> v2; v2 = v1; // 复制 v1 到 v2
Menggunakan std::copy
std::algoritma copy boleh digunakan untuk menyalin elemen dalam bekas. Sintaks std::copy adalah seperti berikut:
std::vector<int> v1{1, 2, 3}; std::vector<int> v2(v1.size()); std::copy(v1.begin(), v1.end(), v2.begin()); // 复制 v1 到 v2
Kes praktikal
Katakan kita mempunyai bekas vektor yang mengandungi maklumat pelajar:
struct Student { int id; std::string name; }; std::vector<Student> students = { {1, "Alice"}, {2, "Bob"}, {3, "Charlie"}, };
Untuk menyalin bekas ini, kita boleh menggunakan pembina salinan:
atau gunakanoperasi tugasan Simbol:
std::vector<Student> students_copy(students);
Kini, students_copy akan mengandungi maklumat pelajar yang sama seperti pelajar.
Atas ialah kandungan terperinci Bagaimana untuk menyalin bekas C++ STL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!