Bagaimana untuk menyalin bekas C++ STL?

王林
Lepaskan: 2024-06-05 11:51:57
asal
831 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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"},
};
Salin selepas log masuk

Untuk menyalin bekas ini, kita boleh menggunakan pembina salinan:

atau gunakan

operasi tugasan Simbol:

std::vector<Student> students_copy(students);
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!