Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyalin bekas C++ STL?

Bagaimana untuk menyalin bekas C++ STL?

王林
王林asal
2024-06-05 11:51:57804semak imbas

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.

如何复制C++ STL容器?

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 gunakan

operasi 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!

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