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
- Kopiëren() gebruiken
- Vector toewijzen() gebruiken
- Vectorinsert() gebruiken
- Vector push_back() gebruiken
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.