logo

Olika sätt att kopiera en vektor i C ++

Att kopiera en vektor är processen att skapa en ny vektor som innehåller samma element som originalvektor. I den här artikeln kommer vi att lära oss olika sätt att kopiera en vektor i C ++.

Den mest effektiva och enklaste metoden för att kopiera en vektor i C ++ är att använda uppdragsoperatör (=) .  Låt oss titta på ett exempel:



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; } 

Produktion
2 4 1 5 3 

C ++ tillhandahåller också fler metoder för att kopiera en vektor till en annan vektor. De är följande:

Innehållsbord

Använda vektorkonstruktör

Ett annat enkelt sätt att kopiera en vektor vid tidpunkten för deklarationen är genom att överföra den ursprungliga vektorn till en annan kopieringskonstruktör vektor.



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; } 

Produktion
2 4 1 5 3 

Använda kopia ()

De kopiera() Funktion är vår go-to-metod för att kopiera data i C ++. Den kan kopiera en vektor till en annan med sina iteratorer. Dessutom copy_if () Variant av denna funktion kan också utföra selektiv kopia på grundval av en unary predikatfunktion.

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; } 

Produktion
2 4 1 5 3 

Förklaring: Vi måste använda Back_Insertor () Funktion om vi inte har angett vektorstorleken under deklarationen. Om vi ​​redan har haft tillräckligt med utrymme måste vi passera v2.begin () i stället.

Använda vektor tilldela ()

De Vector Assign () Metoden motsvarar metoden = operatören men den behöver iteratorn till vektorn ska kopieras.



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; } 

Produktion
2 4 1 5 3 

Använda vektorinsats ()

De vektorinsats () Metod ger en version som kan kopiera alla element från det givna intervallet. Detta kan användas för att kopiera hela vektorn till en annan på liknande sätt som tilldelningsmetod.

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; } 

Produktion
2 4 1 5 3 

Använda vektor push_back ()

Tryck alla elementen i den första vektorn i den andra vektorn genom att använda vektor push_back () metod. En slinga kan vara att iterera genom den första vektorn.

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; } 

Produktion
2 4 1 5 3 

Denna metod ger mer kontroll eftersom vi också kan ändra elementet om det behövs innan kopiering.