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.