Különböző módok a vektor másolásának C ++ -ban

A vektor másolása egy új vektor létrehozásának folyamata, amely ugyanazt az elemeket tartalmazza, mint az eredeti vektor. Ebben a cikkben különféle módszereket fogunk megtanulni a vektor másolatának a C ++ -ban.

A vektor másolatának leghatékonyabb és legegyszerűbb módszere a C ++ -ban a használatával Feladási operátor (=) -  Vessen egy pillantást egy példára:

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

Kibocsátás
2 4 1 5 3  

A C ++ további módszereket is biztosít a vektor másolatához egy másik vektorba. Ezek a következők:

Tartalomjegyzék

Vektor -konstruktor használata

A vektor másolatának egy másik egyszerű módja a deklaráció idején az, ha az eredeti vektorot átadja egy másik másolat -konstruktornak 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  ;   }   

Kibocsátás
2 4 1 5 3  

A copy () használatával

A másolat() A funkció az adatok másolatának a C ++ -ban történő másolására. Az egyik vektorot másolhatja a másikra az iterátorok segítségével. Sőt a copy_if () Ennek a funkciónak a változata szelektív másolatot is végrehajthat egy Unary predikátum funkció alapján.

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

Kibocsátás
2 4 1 5 3  

Magyarázat: Használnunk kell back_insertor () funkció, ha a nyilatkozat során nem adtuk meg a vektor méretét. Ha már volt elég helyünk, akkor át kell mennünk v2.begin () helyette.

A Vector hozzárendelés használata ()

A vektor hozzárendelés () A módszer egyenértékű a = operátor módszerrel, de szüksége van a másolásra a vektor iterátorához.

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

Kibocsátás
2 4 1 5 3  

A vector insert () használatával

A vektor betét () A módszer olyan verziót biztosít, amely másolhatja az összes elemet a megadott tartományból. Ez felhasználható a teljes vektor másolatához hasonló módon, mint a hozzárendelés () módszer.

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

Kibocsátás
2 4 1 5 3  

A vektor push_back () használatával

Tolja az első vektor összes elemét a második vektorba a használatával vektor push_back () módszer. Hurok lehet az első vektoron keresztül.

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

Kibocsátás
2 4 1 5 3  

Ez a módszer nagyobb irányítást biztosít, mivel a másolás előtt szükség esetén módosíthatjuk az elemet.