Skirtingi būdai, kaip nukopijuoti vektorių C ++

Vektoriaus kopijavimas yra naujo vektoriaus, kuriame yra tie patys elementai, kaip originalus vektorius, kūrimo procesas. Šiame straipsnyje mes išmoksime įvairių būdų, kaip nukopijuoti vektorių C ++.

Veiksmingiausias ir lengviausias būdas nukopijuoti vektorių C ++ yra naudojant priskyrimo operatorius (=) .  Pažvelkime į pavyzdį:

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

Išvestis
2 4 1 5 3  

C ++ taip pat pateikia daugiau metodų, kaip nukopijuoti vektorių į kitą vektorių. Jie yra šie:

Turinio lentelė

Naudojant vektorių konstruktorių

Kitas paprastas būdas nukopijuoti vektorių deklaracijos metu yra perduodant originalų vektorių kitam kopijavimo konstruktoriui vektorius.

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

Išvestis
2 4 1 5 3  

Naudojant kopiją ()

kopijuoti () Funkcija yra mūsų būdas nukopijuoti duomenis C ++. Tai gali nukopijuoti vieną vektorių į kitą naudodamas jų iteratorius. Be to copy_if () Šios funkcijos variantas taip pat gali atlikti selektyvią kopiją, remdamasis Unary predikato funkcija.

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

Išvestis
2 4 1 5 3  

Paaiškinimas: Mes turime naudoti back_insertor () Funkcija, jei deklaracijos metu mes nenurodėme vektoriaus dydžio. Jei jau turėjome pakankamai vietos, turime praeiti v2.begin () vietoj.

Naudojant vektoriaus priskyrimą ()

vektoriaus priskyrimas () Metodas yra lygus = operatoriaus metodas, tačiau jam reikia nukopijuoti vektoriaus iteratorių.

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

Išvestis
2 4 1 5 3  

Naudojant „Vector“ intarpą ()

vektoriaus įdėklas () Metodas pateikia versiją, kuri gali nukopijuoti visus elementus iš nurodyto diapazono. Tai gali būti naudojama norint nukopijuoti visą vektorių į kitą panašiu būdu, kaip ir paskirties () metodas.

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

Išvestis
2 4 1 5 3  

Naudojant „Vector Push_back“ ()

Stumkite visus pirmojo vektoriaus elementus į antrąjį vektorių naudodami „Vector Push_back“ () metodas. Kilpa gali būti kartojama per pirmąjį vektorių.

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

Išvestis
2 4 1 5 3  

Šis metodas suteikia daugiau valdymo, nes prieš kopijuodami mes taip pat galime modifikuoti elementą, jei reikia.