Ulike måter å kopiere en vektor i C ++

Kopiering av en vektor er prosessen med å lage en ny vektor som inneholder samme elementer som original vektor. I denne artikkelen vil vi lære forskjellige måter å kopiere en vektor i C ++.

Den mest effektive og enkleste metoden for å kopiere en vektor i C ++ er ved å bruke Oppdragsoperatør (=) .  La oss se på et eksempel:

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

Produksjon
2 4 1 5 3  

C ++ gir også flere metoder for å kopiere en vektor til en annen vektor. De er som følger:

Tabell over innhold

Ved hjelp av vektorkonstruktør

En annen enkel måte å kopiere en vektor på erklæringstidspunktet er ved å sende den opprinnelige vektoren til kopikonstruktøren til en annen 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  ;   }   

Produksjon
2 4 1 5 3  

Ved hjelp av kopi ()

De kopiere() Funksjon er vår go-to-metode for å kopiere data i C ++. Den kan kopiere en vektor til en annen ved hjelp av iteratorene sine. Dessuten copy_if () Variant av denne funksjonen kan også utføre selektiv kopi på grunnlag av en unary predikatfunksjon.

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

Produksjon
2 4 1 5 3  

Forklaring: Vi må bruke Back_Insertor () Funksjon hvis vi ikke har spesifisert vektorstørrelsen under erklæring. Hvis vi allerede har hatt nok plass, må vi passere v2.begin () i stedet.

Bruke vektorordning ()

De vektor tildeling () Metoden tilsvarer = operatørmetode, men den trenger iteratoren til vektoren som skal kopieres.

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

Produksjon
2 4 1 5 3  

Ved hjelp av vektorinnsats ()

De vektorinnsats () Metoden gir en versjon som kan kopiere alle elementene fra det gitte området. Dette kan brukes til å kopiere hele vektoren til en annen på en lignende måte som tilordne () -metode.

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

Produksjon
2 4 1 5 3  

Bruker vektor push_back ()

Skyv alle elementene i den første vektoren inn i den andre vektoren ved å bruke vektor push_back () metode. En sløyfe kan være å iterere gjennom den første vektoren.

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

Produksjon
2 4 1 5 3  

Denne metoden gir mer kontroll, da vi også kan endre elementet om nødvendig før kopiering.