logo

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.