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ų
- Naudojant kopiją ()
- Naudojant vektoriaus priskyrimą ()
- Naudojant „Vector“ intarpą ()
- Naudojant „Vector Push_back“ ()
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.