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
- Använda kopia ()
- Använda vektor tilldela ()
- Använda vektorinsats ()
- Använda vektor push_back ()
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.