logo

Verschillende manieren om een ​​vector te kopiëren in C++

Het kopiëren van een vector is het proces waarbij een nieuwe vector wordt gemaakt die dezelfde elementen bevat als de originele vector. In dit artikel leren we verschillende manieren om een ​​vector in C++ te kopiëren.

De meest efficiënte en gemakkelijkste methode om een ​​vector in C++ te kopiëren is door gebruik te maken van toewijzingsoperator (=) .  Laten we eens een voorbeeld bekijken:



C++
#include    using namespace std; int main() {  vector<int> v1 = {2 4 1 5 3};  // Assigning the vector v1 to vector v2  vector<int> v2 = v1;  for (auto i : v2)  cout << i << ' ';  return 0; } 

Uitvoer
2 4 1 5 3 

C++ biedt ook meer methoden om een ​​vector naar een andere vector te kopiëren. Ze zijn als volgt:

Inhoudsopgave

Vectorconstructor gebruiken

Een andere gemakkelijke manier om een ​​vector te kopiëren op het moment van declaratie is door de originele vector door te geven aan de kopieerconstructor van een andere vector vector.



C++
#include    using namespace std; int main() {  vector<int> v1 = {2 4 1 5 3};  // Copying vector v1 into vector v2  vector<int> v2(v1);  for (auto i : v2)  cout << i << ' ';  return 0; } 

Uitvoer
2 4 1 5 3 

Kopiëren() gebruiken

De kopiëren() function is onze favoriete methode om gegevens in C++ te kopiëren. Het kan de ene vector naar de andere kopiëren met behulp van hun iteratoren. Bovendien de kopieer_if() variant van deze functie kan ook selectief kopiëren op basis van een unaire predikaatfunctie.

C++
#include    using namespace std; int main() {  vector<int> v1 = {2 4 1 5 3};  vector<int> v2;  // Copying vector v1 into vector v2  copy(v1.begin() v1.end() back_inserter(v2));  for (auto i : v2)  cout << i << ' ';  return 0; } 

Uitvoer
2 4 1 5 3 

Uitleg: Wij moeten gebruiken back_insertor() functie als we de vectorgrootte niet hebben opgegeven tijdens de declaratie. Als we al genoeg ruimte hebben, moeten we er langs v2.begin() in plaats van.

Vector toewijzen() gebruiken

De vector toewijzen() methode is equivalent aan de = operatormethode, maar er is een iterator voor de te kopiëren vector nodig.



C++
#include    using namespace std; int main() {  vector<int> v1 = {2 4 1 5 3};  vector<int> v2;  // Copying the vector v1 into vector v  v2.assign(v1.begin() v1.end());  for (auto i : v2)  cout << i << ' ';  return 0; } 

Uitvoer
2 4 1 5 3 

Vectorinsert() gebruiken

De vectorinvoeging() methode biedt een versie die alle elementen uit het opgegeven bereik kan kopiëren. Dit kan worden gebruikt om de gehele vector naar een andere vector te kopiëren, op dezelfde manier als de methode allow().

C++
#include    using namespace std; int main() {  vector<int> v1 = {2 4 1 5 3};  vector<int> v2;  // Copying vector v1 into vector v2  v2.insert(v2.begin() v1.begin() v1.end());  for (auto i : v2)  cout << i << ' ';  return 0; } 

Uitvoer
2 4 1 5 3 

Vector push_back() gebruiken

Duw alle elementen van de eerste vector in de tweede vector met behulp van vectorpush_back() methode. Een lus kan bedoeld zijn om door de eerste vector te itereren.

C++
#include    using namespace std; int main() {  vector<int> v1 = {2 4 1 5 3};  vector<int> v2;  // Copying vector v1 into vector v2  for (auto i : v1)  v2.push_back(i);  for (auto i : v2)  cout << i << ' ';  return 0; } 

Uitvoer
2 4 1 5 3 

Deze methode biedt meer controle omdat we het element indien nodig ook kunnen wijzigen voordat het wordt gekopieerd.