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

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.