Verschillende manieren om een ​​vector te kopiëren in C++

Het kopiëren van een vector is het proces waarbij een nieuwe vector wordt gemaakt die dezelfde elementen bevat als de originele vector. In dit artikel leren we verschillende manieren om een ​​vector in C++ te kopiëren.

De meest efficiënte en gemakkelijkste methode om een ​​vector in C++ te kopiëren is door gebruik te maken van toewijzingsoperator (=) .  Laten we eens een voorbeeld bekijken:

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

Uitvoer
2 4 1 5 3  

C++ biedt ook meer methoden om een ​​vector naar een andere vector te kopiëren. Ze zijn als volgt:

Inhoudsopgave

Vectorconstructor gebruiken

Een andere gemakkelijke manier om een ​​vector te kopiëren op het moment van declaratie is door de originele vector door te geven aan de kopieerconstructor van een andere vector vector.

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

Uitvoer
2 4 1 5 3  

Kopiëren() gebruiken

De kopiëren() function is onze favoriete methode om gegevens in C++ te kopiëren. Het kan de ene vector naar de andere kopiëren met behulp van hun iteratoren. Bovendien de kopieer_if() variant van deze functie kan ook selectief kopiëren op basis van een unaire predikaatfunctie.

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

Uitvoer
2 4 1 5 3  

Uitleg: Wij moeten gebruiken back_insertor() functie als we de vectorgrootte niet hebben opgegeven tijdens de declaratie. Als we al genoeg ruimte hebben, moeten we er langs v2.begin() in plaats van.

Vector toewijzen() gebruiken

De vector toewijzen() methode is equivalent aan de = operatormethode, maar er is een iterator voor de te kopiëren vector nodig.

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

Uitvoer
2 4 1 5 3  

Vectorinsert() gebruiken

De vectorinvoeging() methode biedt een versie die alle elementen uit het opgegeven bereik kan kopiëren. Dit kan worden gebruikt om de gehele vector naar een andere vector te kopiëren, op dezelfde manier als de methode allow().

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

Uitvoer
2 4 1 5 3  

Vector push_back() gebruiken

Duw alle elementen van de eerste vector in de tweede vector met behulp van vectorpush_back() methode. Een lus kan bedoeld zijn om door de eerste vector te itereren.

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

Uitvoer
2 4 1 5 3  

Deze methode biedt meer controle omdat we het element indien nodig ook kunnen wijzigen voordat het wordt gekopieerd.


Dit Vind Je Misschien Leuk