Rôzne spôsoby skopírovania vektora v C ++

Kopírovanie vektora je proces vytvárania nového vektora, ktorý obsahuje rovnaké prvky ako pôvodný vektor. V tomto článku sa dozvieme rôzne spôsoby skopírovania vektora v C ++.

Najúčinnejšou a najjednoduchšou metódou na kopírovanie vektora v C ++ je použitie operátor priradenia (=) .  Pozrime sa na prí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 ++ tiež poskytuje viac metód na kopírovanie vektora do iného vektora. Sú takto:

Tabuľka obsahu

Pomocou vektorového konštruktora

Ďalším jednoduchým spôsobom, ako skopírovať vektor v čase vyhlásenia, je odovzdanie pôvodného vektora do konštruktora kópie iné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  

Pomocou copy ()

Ten copy () Funkcia je naša metóda na kopírovanie údajov v C ++. Môže skopírovať jeden vektor do druhého pomocou svojich iterátorov. Navyše copy_if () Variant tejto funkcie môže tiež vykonať selektívnu kópiu na základe funkcie Unary predikátu.

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  

Vysvetlenie: Musíme použiť back_insertor () Funkcia Ak sme počas vyhlásenia nezadali veľkosť vektora. Keby sme už mali dostatok priestoru, musíme prejsť v2.Begin () namiesto toho.

Pomocou vektorového priradenia ()

Ten vektor priradenie () Metóda je rovnocenná s metódou = operátor, ale potrebuje iterátor na skopírovanie vektora.

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  

Pomocou vektorovej inzercie ()

Ten Vektorová vložka () Metóda poskytuje verziu, ktorá môže kopírovať všetky prvky z daného rozsahu. Toto sa dá použiť na kopírovanie celého vektora do iného podobným spôsobom ako metóda priradenia ().

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  

Pomocou Vector Push_back ()

Zatlačte všetky prvky prvého vektora do druhého vektora pomocou vektor push_back () metóda. Slučka môže byť na iteráciu cez prvý 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  

Táto metóda poskytuje väčšiu kontrolu, pretože v prípade potreby môžeme pred kopírovaním zmeniť aj prvok.