Různé způsoby kopírování vektoru v C ++

Kopírování vektoru je proces vytváření nového vektoru, který obsahuje stejné prvky jako původní vektor. V tomto článku se naučíme různými způsoby, jak zkopírovat vektor v C ++.

Nejúčinnější a nejjednodušší metodou pro kopírování vektoru v C ++ je použití Operátor přiřazení (=) .  Pojďme se podívat na příklad:

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

Výstup
2 4 1 5 3  

C ++ také poskytuje více metod pro kopírování vektoru do jiného vektoru. Jsou následující:

Obsah

Použití konstruktoru vektoru

Dalším snadným způsobem, jak zkopírovat vektor v době prohlášení, je předání původního vektoru kopírovacímu konstruktoru jiného 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  ;   }   

Výstup
2 4 1 5 3  

Pomocí copy ()

The kopie() Funkce je naše metoda pro kopírování dat v C ++. Může zkopírovat jeden vektor do druhého pomocí svých iterátorů. Navíc copy_if () Varianta této funkce může také provádět selektivní kopii na základě funkce UNARY Predicate.

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

Výstup
2 4 1 5 3  

Vysvětlení: Musíme použít back_insertor () Funkce, pokud jsme během deklarace neuvedli velikost vektoru. Pokud jsme již měli dostatek místa, musíme projít v2.begin () místo toho.

Používání vektoru přiřazení ()

The Vector Assoine () Metoda je ekvivalentní metodě = operátora, ale potřebuje, aby byl iterátor vektor zkopírován.

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

Výstup
2 4 1 5 3  

Pomocí vektorového vložení ()

The Vložení vektoru () Metoda poskytuje verzi, která může zkopírovat všechny prvky z daného rozsahu. To lze použít k kopírování celého vektoru na jiný podobně jako metoda přiřazení ().

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

Výstup
2 4 1 5 3  

Používání vektoru push_back ()

Použijte všechny prvky prvního vektoru do druhého vektoru Vector Push_back () metoda. Smyčka může být iterace přes první vektor.

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

Výstup
2 4 1 5 3  

Tato metoda poskytuje větší kontrolu, protože v případě potřeby můžeme také upravit prvek před kopírováním.