Diferite moduri de a copia un vector în C ++

Copierea unui vector este procesul de creare a unui nou vector care conține aceleași elemente ca vectorul original. În acest articol vom învăța diferite modalități de a copia un vector în C ++.

Cea mai eficientă și mai ușoară metodă pentru a copia un vector în C ++ este prin utilizarea operator de atribuire (=) .  Să aruncăm o privire la un exemplu:

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

Ieșire
2 4 1 5 3  

C ++ oferă, de asemenea, mai multe metode pentru a copia un vector într -un alt vector. Sunt următorii:

Tabel de conținut

Folosind constructor vectorial

O altă modalitate ușoară de a copia un vector la momentul declarației este prin trecerea vectorului original la constructorul de copiere al altuia 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  ;   }   

Ieșire
2 4 1 5 3  

Folosind copie ()

copie() Funcția este metoda noastră de a copia date în C ++. Poate copia un vector în altul folosind iteratorii lor. Mai mult decât atât copy_if () Varianta acestei funcții poate efectua, de asemenea, o copie selectivă pe baza unei funcții de predicat unar.

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

Ieșire
2 4 1 5 3  

Explicaţie: Trebuie să folosim back_insertor () Funcție dacă nu am specificat dimensiunea vectorului în timpul declarației. Dacă am avut deja suficient spațiu, atunci trebuie să trecem v2.begin () în schimb.

Utilizarea vectorial ()

vector atribuit () Metoda este echivalentă cu metoda = operator, dar are nevoie de iterator la vectorul să fie copiat.

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

Ieșire
2 4 1 5 3  

Folosind vector insert ()

vector insert () Metoda oferă o versiune care poate copia toate elementele din intervalul dat. Aceasta poate fi utilizată pentru a copia întregul vector pe altul într -un mod similar cu metoda atribuit ().

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

Ieșire
2 4 1 5 3  

Folosind vector push_back ()

Împingeți toate elementele primului vector în al doilea vector folosind vector push_back () metodă. O buclă poate fi iterată prin primul vector.

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

Ieșire
2 4 1 5 3  

Această metodă oferă mai mult control, deoarece putem modifica și elementul, dacă este necesar, înainte de a copia.