Różne sposoby kopiowania wektora w C++
Kopiowanie wektora to proces tworzenia nowego wektora zawierającego te same elementy, co wektor oryginalny. W tym artykule poznamy różne sposoby kopiowania wektora w C++.
Najbardziej wydajną i najłatwiejszą metodą kopiowania wektora w C++ jest użycie operator przypisania (=) . Rzućmy okiem na przykład:
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 ; }
Wyjście
2 4 1 5 3
C++ udostępnia także więcej metod kopiowania wektora do innego wektora. Są one następujące:
Spis treści
- Korzystanie z konstruktora wektorów
- Używanie funkcji kopiowania()
- Korzystanie z wektora przypisania()
- Korzystanie z funkcji wstawki wektorowej()
- Używanie wektora push_back()
Korzystanie z konstruktora wektorów
Innym łatwym sposobem skopiowania wektora w momencie deklaracji jest przekazanie oryginalnego wektora do konstruktora kopiującego innego wektor.
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 ; }
Wyjście
2 4 1 5 3
Używanie funkcji kopiowania()
The kopia() funkcja to nasza podstawowa metoda kopiowania danych w C++. Może kopiować jeden wektor do drugiego za pomocą ich iteratorów. Co więcej kopia_jeśli() wariant tej funkcji może także wykonać selektywne kopiowanie na podstawie jednoargumentowej funkcji predykatu.
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 ; }
Wyjście
2 4 1 5 3
Wyjaśnienie: Musimy skorzystać back_insertor() funkcję, jeśli podczas deklaracji nie określiliśmy rozmiaru wektora. Jeśli mamy już wystarczająco dużo miejsca to musimy przejść v2.rozpocznij() Zamiast.
Korzystanie z wektora przypisania()
The wektor przypisz() metoda jest równoważna metodzie operatora =, ale wymaga iteratora do wektora, który ma zostać skopiowany.
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 ; }
Wyjście
2 4 1 5 3
Korzystanie z wstawki wektorowej()
The wstawka wektorowa() metoda udostępnia wersję, która może skopiować wszystkie elementy z podanego zakresu. Można tego użyć do skopiowania całego wektora do innego w podobny sposób, jak w przypadku metody przypisania().
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 ; }
Wyjście
2 4 1 5 3
Korzystanie z wektora push_back()
Wciśnij wszystkie elementy pierwszego wektora do drugiego wektora za pomocą wektor push_back() metoda. Pętla może polegać na iteracji po pierwszym wektorze.
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 ; }
Wyjście
2 4 1 5 3
Ta metoda zapewnia większą kontrolę, ponieważ możemy również zmodyfikować element, jeśli zajdzie taka potrzeba, przed kopiowaniem.