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
- Ved hjelp av kopi ()
- Bruke vektorordning ()
- Ved hjelp av vektorinnsats ()
- Bruker vektor push_back ()
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.