30 Eksempler på C++ vektorerne

30 Eksempler Pa C Vektorerne



I C++ er Vector en endimensionel datastruktur, som dynamisk øger sig selv baseret på kravet. Dataorganisering (indsættelse/ændring/sletning) kan udføres effektivt i denne datastruktur. Dens applikationer omfatter følgende:

  1. Repræsenterer de matematiske vektorer i videnskabelige og tekniske applikationer
  2. Køer, stakke kan implementeres ved hjælp af denne datastruktur osv.

De fleste af de almindelige CRUD-operationer og -funktioner relateret til denne datastruktur diskuteres scenariemæssigt i detaljer med syntaks og kodestykker.







Emne for indhold:

  1. Indsæt et element i en vektor
  2. Indsæt flere elementer i en vektor
  3. Få adgang til elementerne fra en vektor
  4. Opdater elementet i en vektor
  5. Fjern et bestemt element fra en vektor
  6. Fjern alle elementer fra en vektor
  7. Sammenslutning af vektorer
  8. Skæring af vektorer
  9. Tjek, om vektoren er tom eller ej
  10. Gennemgå en vektor ved hjælp af Const_Iterator
  11. Traversere en vektor ved hjælp af Reverse_Iterator
  12. Skub elementerne ind i vektoren
  13. Pop elementerne fra vektoren
  14. Skift vektorerne
  15. Hent det første element fra vektoren
  16. Hent det sidste element fra vektoren
  17. Tildel nye værdier til en vektor
  18. Udvid vektoren med Emplace()
  19. Udvid vektoren med Emplace_Back()
  20. Maksimal element af en vektor
  21. Minimumselement af en vektor
  22. Summen af ​​elementer i en vektor
  23. Element-vis multiplikation af to vektorer
  24. Punktprodukt af to vektorer
  25. Konverter et sæt til en vektor
  26. Fjern de duplikerede elementer
  27. Konverter en vektor til et sæt
  28. Fjern de tomme strenge
  29. Skriv en vektor til en tekstfil
  30. Opret en vektor fra en tekstfil

Indsæt et element i en vektor

Det std::vector::insert() funktion i C++ STL bruges til at indsætte elementerne på den angivne position.



Syntaks:

vektor. indsætte ( position, element ) ;

Lad os bruge denne funktion og videregive den første position som en parameter, der specificerer den position, hvor elementet skal indsættes, og give elementet som den anden parameter.



Start()-funktionen kan bruges her til at returnere en iterator, der peger på det første element i inputvektoren. Ved at tilføje positionen til denne funktion, indsættes elementet på denne position.





Lad os oprette 'student_names'-vektoren af ​​typen streng og indsætte to strenge på den første og anden position, den ene efter den anden, ved hjælp af insert()-funktionen.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Initialisering af vektoren - elevnavne

vektor < snor > elev_navne ;

cout << 'Eksisterende vektor: \n ' ;

til ( auto jeg : elev_navne ) cout << jeg << endl ;

// Indsæt 'Sravan Kumar' ved den første position

elev_navne. indsætte ( elev_navne. begynde ( ) + 0 , 'Shravan Kumar' ) ;

// Indsæt 'Sravan Kumar' på den anden position

elev_navne. indsætte ( elev_navne. begynde ( ) + 1 , 'Lalitha' ) ;

cout << 'Endelig vektor: \n ' ;

til ( auto j : elev_navne ) cout << j << endl ;

}

Produktion:

Tidligere var vektoren 'student_names' tom. Efter indsættelse indeholder vektoren to elementer.



Indsæt flere elementer i en vektor

Vi bruger den samme funktion, som er std::vector::insert() i dette scenarie. Men vi skal sende de ekstra/forskellige parametre til den samme funktion for at indsætte flere elementer i en vektor.

Scenarie 1: Indsættelse af et enkelt element flere gange

I dette scenarie tilføjer vi det samme element flere gange.

Syntaks:

vektor. indsætte ( position, størrelse, element ) ;

For at gøre dette skal vi overføre størrelsen som den anden parameter til insert()-funktionen. Det samlede antal parametre, der overføres til denne funktion, er tre.

Her:

  1. Positionsparameteren angiver elementpositionen, der skal indsættes. Hvis størrelsen er større end 1, vil startpositionsindekset være positionen.
  2. Størrelsesparameteren angiver antallet af gange et element skal indsættes.
  3. Elementparameteren tager det element, der skal indsættes i en vektor.

Overvej 'student_names' vektoren med to strenge. Indsæt 'Lavanya'-strengene fem gange i den anden position.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Initialisering af vektoren - elevnavne

vektor < snor > elev_navne { 'Shravan Kumar' , 'Lalitha' } ;

cout << 'Eksisterende vektor: \n ' ;

til ( auto jeg : elev_navne ) cout << jeg << endl ;

// Indsæt 'Lavanya' på den anden position 5 gange

elev_navne. indsætte ( elev_navne. begynde ( ) + 1 , 5 , 'Lavanya' ) ;

cout << ' \n Endelig vektor: \n ' ;

til ( auto j : elev_navne ) cout << j << endl ;

}

Produktion:

I den eksisterende vektor er 'Sravan Kumar' i den første position og 'Lalitha' i den anden position. Efter at have indsat 'Lavanya' fem gange (fra anden position til sjette position), flyttede 'Lalitha' til den syvende position (sidste).

Scenarie 2: Indsættelse af flere elementer

I dette scenarie tilføjer vi de forskellige elementer ad gangen fra en anden vektor. Vi bruger også den samme funktion her, men syntaksen og parametrene ændres.

Syntaks:

vektor. indsætte ( position, første_iterator, anden_iterator ) ;

For at gøre dette skal vi overføre størrelsen som den anden parameter til insert()-funktionen. Det samlede antal parametre, der overføres til denne funktion, er tre.

Her:

  1. Positionsparameteren angiver elementpositionen, der skal indsættes.
  2. 'first_iterator' angiver startpositionen, hvorfra elementerne skal indsættes (grundlæggende, ved hjælp af funktionen begin() returneres en iterator, som peger på det første element, der er til stede i containeren).
  3. 'Second_iterator' angiver slutpositionen, indtil elementerne skal indsættes (grundlæggende, ved hjælp af end()-funktionen returneres en iterator, som peger ved siden af ​​det sidste punkt, der er til stede i containeren).

Opret to vektorer, 'marks1' og 'marks2', af heltalstypen. Indsæt alle de elementer, der er til stede i 'marks2' vektoren i den første position af 'marks1' vektoren.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Initialisering af vektoren - marks1

vektor < int > mærker 1 { 100 , 89 , 90 , 78 , 98 } ;

cout << 'Første vektor: \n ' ;

til ( auto jeg : mærker 1 ) cout << jeg << endl ;

// Initialisering af vektoren - marks2

vektor < int > karakterer 2 { 56 , Fire, fem , 65 } ;

cout << 'Anden vektor: \n ' ;

til ( auto j : karakterer 2 ) cout << j << endl ;

mærker 1. indsætte ( begynde ( mærker 1 ) , begynde ( karakterer 2 ) , ende ( karakterer 2 ) ) ;



// Endelig vektor

cout << 'Første-finale vektor: \n ' ;

til ( auto x : mærker 1 )

cout << x << ' ' ;

}

Produktion:

Den første vektor (mærke1) indeholder fem elementer, og den anden vektor (mærke2) indeholder tre elementer. Vi sendte parametrene start (marks1), begin(marks2), end(marks2) til 'insert'-funktionen, således at alle de elementer, der er til stede i den anden vektor, itereres og indsættes i den første vektor i begyndelsen. Så den første vektor indeholder otte elementer.

Få adgang til elementerne fra en vektor

1. Brug af []-operatøren

I nogle scenarier kan du have et krav om kun at returnere de specifikke elementer fra vektoren. Det er ikke nødvendigt at returnere alle elementer. Så for kun at returnere de specifikke elementer baseret på indekset, bruges indeksoperatoren og at() funktionerne.

Syntaks:

vektor [ indeks_position ]

I C++ starter indeksering fra 0 for enhver datastruktur. Hvis elementet ikke eksisterer, returnerer det tomt (ingen fejl eller advarsel vises).

Overvej 'produkter'-vektoren med fem elementer. Få adgang til alle elementerne én efter én ved hjælp af indekspositionen.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - produkter med 5 strenge

vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;

//Adgang til elementer fra produkterne

cout << 'Første element: ' << Produkter [ 0 ] << endl ;

cout << 'Andet element: ' << Produkter [ 1 ] << endl ;

cout << 'Tredje element: ' << Produkter [ 2 ] << endl ;

cout << 'Fjerde element: ' << Produkter [ 3 ] << endl ;

cout << 'Femte element: ' << Produkter [ 4 ] << endl ;



// Prøv at få adgang til 9. element

cout << 'Niende element: ' << Produkter [ 8 ] << endl ;

}

Produktion:

Der er intet element til stede ved indeks 8. Så tomme returneres.

2. Brug af At()-funktionen

At() er en medlemsfunktion, der ligner den tidligere anvendelse, men den returnerer undtagelsen 'std::out_of_range', når indekset uden for rækkevidde leveres til det.

Syntaks:

vektor. ( indeks_position )

Vi skal overføre indekspositionen til denne funktion.

Overvej 'produkter'-vektoren med fem elementer. Få adgang til alle elementerne én efter én ved hjælp af indekspositionen, og prøv at få adgang til det element, der er til stede på den 9. position.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - produkter med 5 strenge

vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;

//Adgang til elementer fra produkterne

cout << 'Første element: ' << Produkter. ( 0 ) << endl ;

cout << 'Andet element: ' << Produkter. ( 1 ) << endl ;

cout << 'Tredje element: ' << Produkter. ( 2 ) << endl ;

cout << 'Fjerde element: ' << Produkter. ( 3 ) << endl ;

cout << 'Femte element: ' << Produkter. ( 4 ) << endl ;



//Få adgang til elementerne, der ikke er i vektoren

cout << 'Niende element: ' << Produkter. ( 8 ) << endl ;

}

Produktion:

Der opstår en fejl ved adgang til det 9. element:

terminate kaldet efter at have kastet en instans af 'std::out_of_range'

hvad ( ) : vektor :: _M_range_check : __n ( som er 8 ) >= det her - > størrelse ( ) ( som er 5 )

Opdater et element i en vektor

1. Brug af []-operatøren

Ved at bruge indekspositionen kan vi opdatere elementet i vektoren. Operatoren [] tager indekspositionen for det element, der skal opdateres. Det nye element vil blive tildelt denne operatør.

Syntaks:

Vektor [ indeks_position ] = Element

Overvej 'student_marks' vektoren med fem værdier. Opdater elementerne i indeks 1 og 3.

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - elev_mærker

vektor < int > elev_karakterer { 98 , 78 , 90 , 67 , 89 } ;

cout << 'Eksisterende mærker: ' << endl ;

til ( int itr : elev_karakterer )

cout << itr << endl ;

// Opdater element ved index-3 med 100

elev_karakterer [ 3 ] = 100 ;

// Opdater element ved indeks-1 med 60

elev_karakterer [ 1 ] = 60 ;

cout << 'Slutkarakterer:' << endl ;

til ( int itr : elev_karakterer )

cout << itr << endl ;

}

Produktion:

Vi kan se, at den endelige vektor indeholder opdateringselementerne ved indeks 1 og 3.

2. Brug af At()-funktionen

I lighed med indeksoperatoren er at() dybest set en medlemsfunktion, som opdaterer værdien baseret på indekset i en iterator. Hvis indekset, der er angivet i denne funktion, ikke eksisterer, udløses undtagelsen 'std::out_of_range'.

vektor. ( indeks_position ) = Element

Overvej 'produkter'-vektoren med fem elementer. Opdater alle de elementer, der er til stede i vektoren, med andre elementer.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - produkter med 5 strenge

vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;

cout << 'Eksisterende produkter: ' << endl ;

til ( streng itr : Produkter )

cout << itr << endl ;

//Opdatering af alle strengene

Produkter. ( 0 ) = 'Kage' ;

Produkter. ( 1 ) = 'Chokolade' ;

Produkter. ( 2 ) = 'Frugter' ;

Produkter. ( 3 ) = 'Løg' ;

Produkter. ( 4 ) = 'Læskedrikke' ;



cout << ' \n Slutprodukter: ' << endl ;

til ( streng itr : Produkter )

cout << itr << endl ;

}

Produktion:

Fjern et bestemt element fra en vektor

I C++ er std::vektor::slet() funktion bruges til at fjerne et bestemt element/område af elementer fra en vektor. Elementerne fjernes baseret på iteratorpositionerne.

Syntaks:

vektor. slette ( iterator position )

Lad os se syntaksen for at fjerne det specifikke element fra en vektor. Vi kan bruge funktionerne start() eller end() til at få positionen af ​​det element, der er til stede i vektoren, der skal fjernes.

Overvej 'produkter'-vektoren med fem elementer.

  1. Fjern det tredje element ved at angive start() iteratoren. Begin() peger på det første element i vektoren. Hvis vi tilføjer to til denne funktion, peger det på det tredje element.
  2. Fjern det sidste element ved at angive end() iteratoren. End() peger på det sidste element i vektoren.
#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - produkter med 5 strenge

vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;

cout << 'Eksisterende produkter: ' << endl ;

til ( streng itr : Produkter )

cout << itr << endl ;



// Fjern 3. element

Produkter. slette ( Produkter. begynde ( ) + 2 ) ;

cout << ' \n Efter fjernelse af 3. element: \n ' ;

til ( streng itr : Produkter )

cout << itr << endl ;

// Fjern sidste element

Produkter. slette ( Produkter. ende ( ) ) ;

cout << ' \n Efter at have fjernet det sidste element: \n ' ;

til ( streng itr : Produkter )

cout << itr << endl ;

}

Produktion:

Nu er der kun tre elementer ('sæbe', 'shampoo', 'frugter'), der findes i 'produkter'-vektoren.

Fjern alle elementer fra en vektor

Scenarie 1: Fjern en række elementer fra en vektor

Lad os bruge std::vector::erase()-funktionen til at fjerne flere elementer i et område.

Syntaks:

vektor. slette ( iterator først, iterator sidst )

De to iteratorer (begin() peger på det første element og end() peger på de sidste elementfunktioner) bruges til at angive området.

Overvej 'produkter'-vektoren med fem elementer og fjern alle elementerne fra den anden position. For at opnå dette er den første iterator start (produkter)+1, der peger på det andet element, og den anden iterator er slut (produkter).

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - produkter med 5 strenge

vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;

cout << 'Eksisterende produkter: ' << endl ;

til ( streng itr : Produkter )

cout << itr << endl ;



// Fjern alle elementer fra den anden position

Produkter. slette ( begynde ( Produkter ) + 1 ,ende ( Produkter ) ) ;

cout << ' \n Slutprodukter: \n ' ;

til ( streng itr : Produkter )

cout << itr << endl ;

}

Produktion:

Nu er der kun ét element ('sæbe'), der er til stede i 'produkter'-vektoren.

Scenarie 2: Fjern alle elementer fra vektoren

Lad os bruge std::vector::clear() funktion til at fjerne alle elementer fra vektoren.

Syntaks:

vektor. klar ( )

Der sendes ingen parametre til denne funktion.

Overvej den samme vektor, som blev brugt i det første scenarie, og fjern alle elementerne ved hjælp af clear()-funktionen.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - produkter med 5 strenge

vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;

cout << 'Eksisterende produkter: ' << endl ;

til ( streng itr : Produkter )

cout << itr << endl ;



// Fjern alle elementer fra produkterne

Produkter. klar ( ) ;

cout << ' \n Slutprodukter: \n ' ;

til ( streng itr : Produkter )

cout << itr << endl ;

}

Produktion:

Vi kan se, at der ikke er nogen elementer i 'produkter'-vektoren.

Sammenslutning af vektorer

Det er muligt at udføre UNION-operationen på vektorer ved hjælp af std::set_union()-funktionen. Union returnerer de unikke elementer fra vektorerne ved at ignorere de duplikerede elementer. Vi skal overføre begge iteratorer til denne funktion. Sammen med dette skal der passeres en output-iterator, som gemmer resultatet, der returneres af begge iteratorer.

Syntaks:

sæt_union ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;

Her:

  1. 'First1' peger på det første element i den første iterator (vektor).
  2. 'Sidste1' peger på det sidste element i den første iterator (vektor).
  3. 'First2' peger på det første element i den anden iterator (vektor).
  4. 'last2' peger på det sidste element i den anden iterator (vektor).

Opret to vektorer - 'emner1' og 'emner2' - af typen heltal.

  1. Sorter de to vektorer ved at bruge sort()-funktionen ved at sende iteratorerne.
  2. Opret en outputvektor (iterator).
  3. Find foreningen af ​​disse to vektorer ved hjælp af std::set_union()-funktionen. Brug begin() som den første iterator og end() som den sidste iterator.
  4. Gentag outputvektoren for at vise de elementer, der returneres af funktionen.
#include

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - mærker1

vektor < int > mærker 1 = { 100 , 90 , 80 , 70 , 60 } ;



// Opret vektor - marks2

vektor < int > karakterer 2 = { 80 , 90 , 60 , 70 , 100 } ;

// Sorter begge vektorerne

sortere ( mærker 1. begynde ( ) , mærker 1. ende ( ) ) ;

sortere ( karakterer 2. begynde ( ) , karakterer 2. ende ( ) ) ;

vektor < int > outputVektor ( mærker 1. størrelse ( ) + karakterer 2. størrelse ( ) ) ;

vektor < int > :: iterator jeg, s ;

jeg = sæt_union ( mærker 1. begynde ( ) , mærker 1. ende ( ) ,

karakterer 2. begynde ( ) ,mærker2. ende ( ) ,

outputVektor. begynde ( ) ) ;

cout << ' \n karakterer1 U karakterer2: \n ' ;

til ( s = outputVektor. begynde ( ) ; s ! = jeg ; ++ s )

cout << * s << ' ' << ' \n ' ;

}

Produktion:

Der er kun fem unikke elementer i begge vektorer (emne1 og subjekter2).

Skæring af vektorer

At finde skæringspunktet mellem to vektorer kan være muligt ved hjælp af std::set_intersection()-funktionen. Intersection returnerer de elementer, der er til stede i begge vektorer.

Syntaks:

sæt_kryds ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;

De parametre, der sendes til set_union()-funktionen, kan også overføres til denne set_intersection()-funktion.

Opret to vektorer - 'emner1' og 'emner2' - af typen heltal.

  1. Sorter de to vektorer ved at bruge sort()-funktionen ved at sende iteratorerne.
  2. Opret en outputvektor (iterator).
  3. Find skæringspunktet mellem disse to vektorer ved hjælp af std::set_intersection()-funktionen. Brug begin() som den første iterator og end() som den sidste iterator.
  4. Gentag outputvektoren for at vise de elementer, der returneres af funktionen.
#include

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - mærker1

vektor < int > mærker 1 = { 100 , 10 , 80 , 40 , 60 } ;



// Opret vektor - marks2

vektor < int > karakterer 2 = { halvtreds , 90 , 60 , 10 , 100 } ;

// Sorter begge vektorerne

sortere ( mærker 1. begynde ( ) , mærker 1. ende ( ) ) ;

sortere ( karakterer 2. begynde ( ) , karakterer 2. ende ( ) ) ;

vektor < int > outputVektor ( mærker 1. størrelse ( ) + karakterer 2. størrelse ( ) ) ;

vektor < int > :: iterator jeg, s ;

jeg = sæt_kryds ( mærker 1. begynde ( ) , mærker 1. ende ( ) ,

karakterer 2. begynde ( ) ,mærker2. ende ( ) ,

outputVektor. begynde ( ) ) ;

cout << ' \n marks1 ∩ marks2: \n ' ;

til ( s = outputVektor. begynde ( ) ; s ! = jeg ; ++ s )

cout << * s << ' ' << ' \n ' ;

}

Produktion:

Der er kun tre elementer til stede i begge vektorer (emne1 og subjekter2).

Tjek, om vektoren er tom eller ej

Før du arbejder med vektorer, er det vigtigt at kontrollere, om vektoren er tom eller ej. Det er også en god praksis i softwareprojekter at kontrollere, om vektoren er tom eller ej, før du udfører operationerne som CRUD-operationer osv.

1. Brug af Std::vector::empty()

Denne funktion returnerer 1, hvis vektoren er tom (indeholder ikke noget element). Ellers returneres 0. Ingen parameter sendes til denne funktion.

2. Brug af Std::vektor::størrelse()

Funktionen std::vector::size() returnerer det heltal, der repræsenterer det samlede antal elementer, der er til stede i vektoren.

Opret to vektorer - 'college1' og 'college2'. 'College1' indeholder fem elementer, og 'college2' er tomt. Anvend begge funktioner på begge vektorer og kontroller output.

#include

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - college1

vektor < snor > college 1 = { 'college-A' , 'college-B' , 'college-C' , 'college-D' , 'college-E' } ;

// Opret vektor - college2

vektor < snor > college 2 ;

// tomme()

cout << college 1. tom ( ) << endl ;

cout << college 2. tom ( ) << endl ;

// størrelse()

cout << college 1. størrelse ( ) << endl ;

cout << college 2. størrelse ( ) << endl ;

}

Produktion:

Funktionen empty() returnerer 0 for 'college1' og 1 for 'college2'. Funktionen size() returnerer fem for 'college1' og 0 for 'college2'.

Gennemgå en vektor ved hjælp af Const_Iterator

Når du arbejder på C++ containere som sæt, vektorer osv., er det muligt at iterere over alle de elementer, der er til stede i containeren uden at ændre dem. Det konst_iterator er en af ​​de iteratorer, der opnår dette scenarie. cbegin() (peger på det første element i vektoren) og cend() (peger på det sidste element i vektoren) er de to funktioner, der leveres af hver container, som bruges til at returnere den konstante iterator til begyndelsen og slutningen af beholderen. Mens vi itererer vektoren, kan vi bruge disse to funktioner.

  1. Lad os oprette en vektor ved navn 'afdelinger' med fem strenge.
  2. Erklære en const_iterator – ctr af typen .
  3. Gentag over afdelingerne ved hjælp af den forrige iterator ved hjælp af 'for'-løkken og vis den.
#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - afdelinger

vektor < snor > afdelinger = { 'Salg' , 'Service' ,

'HR' , 'DET' , 'Andre' } ;



vektor < snor > :: konst_iterator ctr ;

// Iterér over afdelingerne ved hjælp af const_iterator - ctr.

til ( ctr = afdelinger. cbegynde ( ) ; ctr ! = afdelinger. nogle få ( ) ; ctr ++ ) {

cout << * ctr << endl ;

}

}

Produktion:

Gennemgå en vektor ved hjælp af Reverse_Iterator

Det omvendt_iterator er også en iterator, der ligner const_iterator, men den returnerer elementerne omvendt. rbegin() (peger på det sidste element i vektoren) og rend() (peger på det første element i vektoren) er de to funktioner, der leveres af hver container, som bruges til at returnere den konstante iterator til slutningen og begyndelsen af beholderen.

  1. Lad os oprette en vektor ved navn 'afdelinger' med fem strenge.
  2. Erklære en omvendt_iterator – rtr af typen .
  3. Gentag over afdelingerne ved hjælp af den forrige iterator ved hjælp af 'for'-løkken og vis den.
#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - afdelinger

vektor < snor > afdelinger = { 'Salg' , 'Service' ,

'HR' , 'DET' , 'Andre' } ;



vektor < snor > :: omvendt_iterator rtr ;

// Iterér over afdelingerne ved hjælp af reverse_iterator - rtr.

til ( rtr = afdelinger. begynde ( ) ; rtr ! = afdelinger. gør ( ) ; rtr ++ ) {

cout << * rtr << endl ;

}

}

Produktion:

Skub elementerne ind i vektoren

At skubbe eller tilføje elementerne i en vektor er en envejs-indsættelse, der kan udføres ved hjælp af vector::push_back() fungere.

Syntaks:

vektor. skub tilbage ( element )

Det kræver et element at blive skubbet ind i vektoren som en parameter.

Lad os oprette en tom vektor ved navn 'afdelinger' med fem strenge og skubbe to strenge efter hinanden ved hjælp af push_back()-funktionen.

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Initialiser vektor - afdelinger

vektor < snor > afdelinger ;

cout << 'Faktiske afdelinger:' << endl ;

til ( auto itr = afdelinger. begynde ( ) ; itr ! = afdelinger. ende ( ) ; ++ itr )

cout << * itr << endl ;

// Tryk på 'Salg'

afdelinger. skub tilbage ( 'Salg' ) ;

// Skubbe det'

afdelinger. skub tilbage ( 'DET' ) ;

cout << ' \n Afsluttende afdelinger:' << endl ;

til ( auto itr = afdelinger. begynde ( ) ; itr ! = afdelinger. ende ( ) ; ++ itr )

cout << * itr << endl ;

}

Produktion:

Først trykker vi på 'Salg'. Derefter skubbes 'IT' ind i vektoren. Nu indeholder 'afdelings'-vektoren to elementer.

Pop elementerne fra vektoren

Hvis du vil slette det sidste element, der er til stede i vektoren, skal du bruge vector::pop_back() funktion er den bedste tilgang. Det sletter det sidste element, der er til stede i vektoren.

Syntaks:

vektor. pop_back ( )

Der kræves ingen parameter til denne funktion. Det viser den udefinerede adfærd, hvis vi forsøger at slette det sidste element fra en tom vektor.

Lad os oprette en tom vektor ved navn 'afdelinger' med fem strenge og slette det sidste element ved hjælp af den forrige funktion. Vis vektoren i begge tilfælde.

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Initialiser vektor - afdelinger

vektor < snor > afdelinger = { 'Salg' , 'DET' , 'Service' , 'Markedsføring' , 'HR' } ;

cout << 'Faktiske afdelinger:' << endl ;

til ( auto itr = afdelinger. begynde ( ) ; itr ! = afdelinger. ende ( ) ; ++ itr )

cout << * itr << endl ;



// Slet det sidste element

afdelinger. pop_back ( ) ;

cout << ' \n Afsluttende afdelinger:' << endl ;

til ( auto itr = afdelinger. begynde ( ) ; itr ! = afdelinger. ende ( ) ; ++ itr )

cout << * itr << endl ;

}

Produktion:

'HR' er det sidste element, der er til stede i 'afdelings'-vektoren. Så den fjernes fra vektoren, og den endelige vektor indeholder 'Salg', 'IT', 'Service' og 'Marketing'.

Skift vektorerne

Det vektor::swap() funktion i C++ STL bruges til at bytte alle de elementer, der er til stede i to vektorer.

Syntaks:

første_vektor. bytte rundt ( anden_vektor )

Den tager ikke højde for størrelsen af ​​vektorerne, men vektorerne skal være af samme type (fejl opstår, hvis vektortyperne er forskellige).

Lad os skabe to vektorer - 'frugter' og 'grøntsager' - af strengtype med forskellige størrelser. Skift hver af dem og vis vektorerne i begge tilfælde.

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Initialiser vektor - frugter

vektor < snor > frugter = { 'Æble' , 'Mango' } ;

cout << 'Faktiske frugter:' << endl ;

til ( auto itr = frugter. begynde ( ) ; itr ! = frugter. ende ( ) ; ++ itr )

cout << * itr << endl ;



// Initialiser vektor - grøntsager

vektor < snor > grøntsager = { 'Kartoffel' , 'Tomat' , 'Brinjal' } ;

cout << ' \n Faktiske grøntsager:' << endl ;

til ( auto itr = grøntsager. begynde ( ) ; itr ! = grøntsager. ende ( ) ; ++ itr )

cout << * itr << endl ;



// Skift elementerne i begge vektorer

frugter. bytte rundt ( grøntsager ) ;

cout << ' \n Frugt efter bytte:' << endl ;

til ( auto itr = frugter. begynde ( ) ; itr ! = frugter. ende ( ) ; ++ itr )

cout << * itr << endl ;

cout << ' \n Grøntsager efter bytte:' << endl ;

til ( auto itr = grøntsager. begynde ( ) ; itr ! = grøntsager. ende ( ) ; ++ itr )

cout << * itr << endl ;

}

Produktion:

Tidligere har 'frugt'-vektoren to elementer, og 'grøntsager'-vektoren har tre elementer. Efter ombytning indeholder 'frugt'-vektoren tre elementer og 'grøntsager'-vektoren indeholder to elementer.

Hent det første element fra vektoren

I nogle tilfælde er kravet kun at returnere det første element fra vektoren. Vector::front()-funktionen i C++ STL henter kun det første element fra vektoren.

Syntaks:

vektor. foran ( )

Denne funktion tager ikke nogen parameter. Hvis vektoren er tom, vises en fejl.

Lad os skabe to vektorer - 'frugter' og 'grøntsager' - af strengtype og prøve at hente det første element separat fra de to vektorer.

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - frugter med 2 elementer

vektor < snor > frugter = { 'Æble' , 'Mango' } ;

// Returner det første element

cout << frugter. foran ( ) << endl ;



// Initialiser vektor - grøntsager

vektor < snor > grøntsager ;

// Prøv at returnere det første element

cout << grøntsager. foran ( ) ;

}

Produktion:

'Æble' er det første element, der er til stede i 'frugt'-vektoren. Så den er returneret. Men der opstår en fejl, når vi forsøger at hente det første element fra 'grøntsager'-vektoren, da det er tomt.

Hent det sidste element fra vektoren

Vector::end()-funktionen i C++ STL henter kun det sidste element fra vektoren.

Syntaks:

vektor. tilbage ( )

Denne funktion tager ikke nogen parameter. Hvis vektoren er tom, vises en fejl.

Lad os skabe to vektorer - 'frugter' og 'grøntsager' - af strengtype og forsøge at hente det sidste element adskilt fra de to vektorer.

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - frugter med 2 elementer

vektor < snor > frugter = { 'Æble' , 'Mango' } ;

// Hent det sidste element

cout << frugter. tilbage ( ) << endl ;



// Initialiser vektor - grøntsager

vektor < snor > grøntsager ;

// Prøv at hente det sidste element

cout << grøntsager. tilbage ( ) ;

}

Produktion:

'Mango' er det sidste element, der er til stede i 'frugt'-vektoren. Så den er returneret. Men der opstår en fejl, når vi forsøger at hente det sidste element fra vektoren 'grøntsager', da det er tomt.

Tildel nye værdier til en vektor

I nogle scenarier, hvis du vil opdatere alle værdierne med den nye værdi eller oprette en vektor med de samme værdier, er brug af funktionen vector::assign() den bedste fremgangsmåde. Ved at bruge denne funktion kan vi:

  1. Opret vektoren med alle lignende elementer
  2. Rediger den eksisterende vektor med det samme element

Syntaks:

vektor. tildele ( størrelse, værdi )

Der kræves to parametre til denne funktion.

Her:

  1. Størrelsen angiver antallet af elementer, der skal tildeles.
  2. Værdien angiver det element, der skal tildeles.

Lad os skabe en vektor ved navn 'marks1' med fem værdier og opdatere denne vektor med fire elementer, således at alle elementerne i den opdaterede vektor er lig med 20.

#include

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - mærker1

vektor < int > mærker 1 = { 100 , 90 , 80 , 70 , 60 } ;

cout << 'Faktisk vektor:' << endl ;

til ( int jeg = 0 ; jeg < mærker 1. størrelse ( ) ; jeg ++ )

cout << mærker 1 [ jeg ] << endl ;



mærker 1. tildele ( 4 , tyve ) ;



cout << ' \n Opdateret vektor:' << endl ;

til ( int jeg = 0 ; jeg < mærker 1. størrelse ( ) ; jeg ++ )

cout << mærker 1 [ jeg ] << endl ;

}

Produktion:

Tidligere rummer vektoren fem forskellige elementer. Nu indeholder den kun fire elementer, og alle er lig med 20.

Udvid vektoren med Emplace()

Vi ved allerede, at nye elementer er dynamisk indsat på enhver position i en vektor. Det er muligt at bruge vektor::emplace()-funktionen. Lad os hurtigt se på syntaksen og parametrene, der accepteres af denne funktion.

Syntaks:

vektor. Beliggenhed ( const_iterator position, element )

To obligatoriske parametre overføres til denne funktion.

Her:

  1. Den første parameter tager positionen, så vi kan indsætte elementet på en hvilken som helst position. Vi kan få positionen ved at bruge start() eller end() iteratorfunktionen.
  2. Den anden parameter er det element, der skal indsættes i vektoren.

Overvej 'kemikalier' vektoren med to elementer.

  1. Indsæt 'Mangan' i den første position - start (kemikalier)
  2. Indsæt 'Kobber' i den sidste position - ende (kemikalier)
  3. Indsæt 'Svovl' i den tredje position - start(kemikalier)+2
#include

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - kemikalier

vektor < snor > kemikalier = { 'Ilt' , 'CO' } ;

cout << 'Faktiske kemikalier:' << endl ;

til ( int jeg = 0 ; jeg < kemikalier. størrelse ( ) ; jeg ++ )

cout << kemikalier [ jeg ] << endl ;



// Indsæt element på den første position

kemikalier. Beliggenhed ( begynde ( kemikalier ) , 'Mangan' ) ;



// Indsæt element på den sidste position

kemikalier. Beliggenhed ( ende ( kemikalier ) , 'Kobber' ) ;



// Indsæt element på den tredje position

kemikalier. Beliggenhed ( begynde ( kemikalier ) + 2 , 'Svovl' ) ;



cout << ' \n Endelige kemikalier:' << endl ;

til ( int jeg = 0 ; jeg < kemikalier. størrelse ( ) ; jeg ++ )

cout << kemikalier [ jeg ] << endl ;

}

Produktion:

Nu indeholder den endelige vektor fem elementer (angivet i det følgende skærmbillede).

Udvid vektoren med Emplace_Back()

Et element kan tilføjes (tilføje i slutningen af ​​vektoren), hvilket kan gøres ved hjælp af vector::emplace_back() fungere.

Syntaks:

vektor. emplace_back ( element )

Det er obligatorisk at videregive elementet, der skal tilføjes til vektoren, som en parameter.

Lad os tilføje to elementer efter hinanden ved hjælp af emplace_back()-funktionen.

#include

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - kemikalier

vektor < snor > kemikalier = { 'Ilt' , 'CO' } ;

cout << 'Faktiske kemikalier:' << endl ;

til ( int jeg = 0 ; jeg < kemikalier. størrelse ( ) ; jeg ++ )

cout << kemikalier [ jeg ] << endl ;



// Indsæt mangan i slutningen af ​​vektoren

kemikalier. emplace_back ( 'Mangan' ) ;



// Indsæt mangan i slutningen af ​​vektoren

kemikalier. emplace_back ( 'Kobber' ) ;





cout << ' \n Endelige kemikalier:' << endl ;

til ( int jeg = 0 ; jeg < kemikalier. størrelse ( ) ; jeg ++ )

cout << kemikalier [ jeg ] << endl ;

}

Produktion:

Nu indeholder den endelige vektor fire elementer efter tilføjelse af 'Mangan' og 'Kobber'.

Maksimal element af en vektor

  1. Lav en vektor med nogle elementer.
  2. For at finde det maksimale element, der er til stede i vektoren, skal du bruge funktionen *max_element() som accepterer to iteratorer som argumenter. Disse to parametre fungerer som området, og det maksimale element returneres inden for det angivne interval. Startpositionen er start() og den sidste position er end().
* max_element ( første_indeks, sidste_indeks )

Lad os overveje en vektor ved navn 'item_costs', der har fem heltalstypeværdier og returnerer det maksimale element.

#inkluder

#include

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - item_costs

vektor < int > vare_omkostninger = { 8900 , 5677 , 200 , 1000 , 2300 } ;



cout << 'Pris på varer: \n ' ;

til ( int jeg = 0 ; jeg < vare_omkostninger. størrelse ( ) ; jeg ++ )

cout << vare_omkostninger [ jeg ] << endl ;



// Returner det maksimale element fra ovenstående vektor - item_costs

cout << ' \n Maksimal pris: ' << * max_element ( begynde ( vare_omkostninger ) ,ende ( vare_omkostninger ) ) ;

}

Produktion:

Her er 8900 det maksimale element blandt alle de elementer, der er til stede i vektoren 'vare_omkostninger'.

Minimumselement af en vektor

  1. Lav en vektor med nogle elementer.
  2. For at finde det minimumselement, der er til stede i vektoren, skal du bruge funktionen *min_element() som accepterer to iteratorer som argumenter. Disse to parametre fungerer som området, og minimumselementet (mindre end alle de andre elementer) returneres inden for det angivne interval. Startpositionen er start() og den sidste position er end().
* min_element ( første_indeks, sidste_indeks )

Brug den samme vektor, som er oprettet, til at finde det maksimale element og find minimumselementet ved hjælp af *min_element()-funktionen.

#inkluder

#include

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - item_costs

vektor < int > vare_omkostninger = { 8900 , 5677 , 200 , 1000 , 2300 } ;



cout << 'Pris på varer: \n ' ;

til ( int jeg = 0 ; jeg < vare_omkostninger. størrelse ( ) ; jeg ++ )

cout << vare_omkostninger [ jeg ] << endl ;



// Returner minimumselementet fra ovenstående vektor - item_costs

cout << ' \n Minimum pris: ' << * min_element ( begynde ( vare_omkostninger ) ,ende ( vare_omkostninger ) ) ;

}

Produktion:

Her er 200 minimumselementet blandt alle de elementer, der er til stede i vektoren 'item_costs'.

Summen af ​​elementer i en vektor

For at returnere summen af ​​alle de elementer, der er til stede i vektoren, skal den ophobe() funktion i C++ STL bruges. Den accepterer tre parametre. Den første parameter tager det første indeks, der repræsenterer startelementet i området (specificer start() iteratoren), og den anden parameter tager det sidste indeks, der repræsenterer slutelementet i området (specificer end() iteratoren) . Til sidst skal vi videregive den indledende værdi af summen (i vores tilfælde er det 0).

ophobe ( first_index, last_index, initial_val ) ;

Opret en vektor med navnet 'item_costs' med fem heltalstypeelementer og beregn summen.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret vektor - item_costs

vektor < int > vare_omkostninger = { 8900 , 5677 , 200 , 1000 , 2300 } ;



cout << 'Pris på varer: \n ' ;

til ( int jeg = 0 ; jeg < vare_omkostninger. størrelse ( ) ; jeg ++ )

cout << vare_omkostninger [ jeg ] << endl ;



// Returner summen af ​​alle elementer i ovenstående vektor - item_costs

cout << ' \n Udgifter i alt: ' << ophobe ( begynde ( vare_omkostninger ) ,ende ( vare_omkostninger ) , 0 ) ;

}

Produktion:

Summen af ​​8900, 5677, 200, 1000, 2300 er 18077.

Element-vis multiplikation af to vektorer

  1. Opret to vektorer med typen numerisk, og to vektorer skal være af samme størrelse (samlet antal elementer, der er til stede i den første vektor = det samlede antal elementer, der er til stede i den anden vektor).
  2. Erklær en ny vektor og brug for sløjfe , udfør multiplikationsoperationen på to elementer i hver iteration, og gem værdien i den oprettede vektor ved hjælp af push_back()-funktionen.
  3. til ( int itr = 0 ; jeg < first_vec. størrelse ( ) ; itr ++ )

    {

    resultat_vektor. skub tilbage ( first_vec [ itr ] * sec_thing [ itr ] ) ;

    }
  4. Vis de elementer, der er til stede i den resulterende vektor ved at iterere den.

Opret en vektor med navnet 'item_costs' med fem heltalstypeelementer og beregn summen.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret to vektorer - produkter1 og produkter2 med 5 elementer hver

vektor < int > produkter 1 = { 10 , tyve , 30 , 40 , halvtreds } ;

vektor < int > produkter 2 = { halvtreds , 40 , 30 , 70 , 60 } ;



vektor < int > resultat_produkter ;



// Udfør elementvis multiplikation

til ( int jeg = 0 ; jeg < produkter 1. størrelse ( ) ; jeg ++ ) {

resultat_produkter. skub tilbage ( produkter 1 [ jeg ] * produkter 2 [ jeg ] ) ;

}



// Vis den resulterende vektor

cout << 'Vektor multiplikation: \n ' ;

til ( int res : resultat_produkter )

cout << res << endl ;

}

Produktion:

Gentagelse - 1 : 10 * halvtreds => 500

Gentagelse - 2 : tyve * 40 => 800

Gentagelse - 3 : 30 * 30 => 900

Gentagelse - 4 : 40 * 70 => 2800

Gentagelse - 5 : halvtreds * 60 => 3000

Punktprodukt af to vektorer

I tilfælde af C++ vektorer er prikproduktet defineret som 'summen af ​​produkterne af de tilsvarende indgange af de to sekvenser af vektorer'.

Syntaks:

indre_produkt ( Vector1 first, Vector1 last, Vector2 first, Initial_Val )

Brug funktionen inner_product() til at returnere prikproduktet. Denne funktion tager fire nødvendige parametre.

Her:

  1. Den første parameter refererer til en iterator, der peger på begyndelsen af ​​den første vektor (angiv ved hjælp af start()-funktionen).
  2. Den anden parameter refererer til en iterator, der peger på slutningen af ​​den første vektor (angiv ved hjælp af end()-funktionen).
  3. Den tredje parameter refererer til en iterator, der peger på begyndelsen af ​​den anden vektor (angiv ved hjælp af start()-funktionen).
  4. Startværdien skal sendes som den sidste parameter, som er et heltal for akkumuleringen af ​​prikproduktet.

Brug det samme program, der er oprettet til multiplikation af to vektorer, og brug funktionen innsr_product() til at finde prikproduktet af de to vektorer.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret to vektorer - produkter1 og produkter2 med 5 elementer hver

vektor < int > produkter 1 = { 10 , tyve , 30 , 40 , halvtreds } ;

vektor < int > produkter 2 = { halvtreds , 40 , 30 , 70 , 60 } ;



// Vis den resulterende vektor

cout << 'Prik Produkt af produkter1 og produkter2: ' ;

cout << indre_produkt ( begynde ( produkter 1 ) ,ende ( produkter 1 ) ,begynde ( produkter 2 ) , 0 ) ;

}

Produktion:

( 10 * halvtreds ) + ( tyve * 40 ) + ( 30 * 30 ) + ( 40 * 70 ) + ( halvtreds * 60 )

=> 500 + 800 + 900 + 2800 + 3000

=> 8000

Konverter et sæt til en vektor

Der er mange måder at konvertere et sæt til en vektor ved at overføre alle de elementer, der er rejst i et sæt til en vektor. Den bedste og enkleste måde er at bruge std::copy()-funktionen.

Syntaks

std :: kopi ( sourceIterator først, sourceIterator sidst, destinationIterator først )

Brug std::copy() funktion, som indsætter elementerne fra en mængde i vektoren. Det kræver tre parametre.

Her:

  1. Den første parameter refererer til kildeiteratoren, der peger på det første element i iteratoren. Her er set den kildeiterator, der er angivet ved hjælp af start()-funktionen.
  2. På samme måde peger den anden parameter på det sidste element (end() funktion).
  3. Den tredje parameter refererer til destinations-iteratoren, der peger på det første element (specificeret ved hjælp af start()-funktionen) i iteratoren.

Lad os skabe et sæt med fem elever og kopiere alle elementerne til en vektor ved hjælp af den forrige funktion.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Lav et sæt - elever med 5 elementer

sæt < snor > studerende = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' } ;

cout << 'Sæt: \n ' ;

til ( streng i : studerende )

cout << jeg << endl ;



// Create Vector - student_vcof størrelse lig med størrelsen af ​​sættet

vektor < snor > student_vc ( studerende. størrelse ( ) ) ;



// Indsæt elementer fra et sæt - elever i en vektor - student_vc.

kopi ( studerende. begynde ( ) , studerende. ende ( ) , student_vc. begynde ( ) ) ;



cout << ' \n Vektor: \n ' ;

til ( streng i : student_vc )

cout << jeg << endl ;

}

Produktion:

Nu kopieres alle de elementer, der er til stede i 'Students'-sættet til 'students_vc'-vektoren.

Fjern de duplikerede elementer

  1. Først skal vi sortere elementerne i vektoren, så alle de duplikerede elementer støder op til hinanden ved hjælp af std::sort() fungere.
  2. std :: sortere ( Vektor først, vektor sidst ) ;
  3. Brug std::unique()-funktionen, så duplikatelementerne bliver valgt. Brug samtidig erase()-funktionen til at fjerne de dubletter, der returneres af std::unique()-funktionen. Rækkefølgen af ​​elementer kan ændre sig i den endelige vektor.
  4. vektor. slette ( std :: enestående ( Vektor først, vektor sidst ) , Vektor sidst ) )

Opret 'elever'-vektoren med 10 elementer og returner vektoren ved at fjerne dubletterne.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Lav en vektor - elever med 10 elementer

vektor < snor > studerende = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' ,

'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' } ;

cout << 'Studerende: \n ' ;

til ( streng i : studerende )

cout << jeg << ' ' ;



// Sorter alle elementerne i elevernes vektor.

sortere ( begynde ( studerende ) , ende ( studerende ) ) ;



// Brug funktionen unik() til at fjerne dubletterne med funktionen erase().

studerende. slette ( enestående ( begynde ( studerende ) , ende ( studerende ) ) , ende ( studerende ) ) ;



cout << ' \n \n Unikke studerende: \n ' ;

til ( auto itr = cbegynde ( studerende ) ; itr ! = nogle få ( studerende ) ; ++ itr ) {

cout << * itr << ' ' ;

}

}

Produktion:

Nu er alle elementerne unikke i vektoren.

Konverter en vektor til et sæt

Set tillader ikke duplikerede elementer. Hvis du skriver for at indsætte en vektor i et sæt med dubletter, vil de blive ignoreret. Vi bruger den samme std::copy() funktion, som blev brugt i det forrige scenarie, der konverterede sættet til en vektor.

I dette scenarie:

  1. Den første parameter tager vektoren som kildeiteratoren, der er angivet ved hjælp af start()-funktionen.
  2. Den anden parameter tager vektoren som kildeiteratoren, der er angivet ved hjælp af end()-funktionen.
  3. Bestå std::inserter()-funktionen, som bruges til at overskrive/kopiere elementerne automatisk på en bestemt position i sættet ved at angive sættet og iteratoren, der peger mod slutningen af ​​sættet som parametre.

Lad os skabe en vektor med 10 heltal og kopiere elementerne til et sæt.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret et sæt - mærker med 10 værdier

vektor < int > mærker = { 12 , 3. 4 , 56 , 78 , 65 , 78 , 90 , 90 , 78 , 3. 4 } ;

cout << 'Vektor: \n ' ;

til ( int jeg : mærker )

cout << jeg << ' ' ;



// Create Set - marks_set af størrelsen lig med størrelsen af ​​vektoren

sæt < int > marks_set ;



// Indsæt elementer fra et sæt - elever i en vektor - student_vc.

kopi ( begynde ( mærker ) ,ende ( mærker ) , indsætter ( marks_set, end ( marks_set ) ) ) ;



cout << ' \n \n Sæt: \n ' ;

til ( int jeg : marks_set )

cout << jeg << ' ' ;

}

Produktion:

Den eksisterende vektor med navnet 'mærker' har 10 værdier. Efter at have kopieret det ind i 'marks_set'-sættet, indeholder det kun seks elementer, fordi de andre fire elementer er duplikeret.

Fjern de tomme strenge

Der er ingen brug af tomme strenge, der er til stede i en vektor. Det er en god praksis at fjerne de tomme strenge, der er til stede i vektoren. Lad os se, hvordan du fjerner de tomme strenge fra C++ vektoren:

  1. Iterér vektoren ved hjælp af 'for'-løkken.
  2. I hver iteration skal du kontrollere, om elementet er tomt ('') eller ikke ved at bruge '=='-operatoren med at()-medlemsfunktionen.
  3. Brug funktionen std::erase() til at fjerne de tomme strenge efter at have kontrolleret den tidligere betingelse.
  4. Gentag trin 2 og trin 3 indtil slutningen af ​​vektoren.

Lad os skabe 'virksomheder' vektoren med 10 strenge. Blandt dem er fem tomme, og vi fjerner dem ved at implementere den tidligere tilgang.

#include

#inkluder

ved brug af navneområde std ;

vigtigste ( ) {



vektor < snor > virksomheder { 'Virksomhed-A' , '' , 'Virksomhed-B' ,

'' , 'Virksomhed-C' , '' , 'Company-D' , '' , '' , '' } ;



// Gentag over virksomheder

// og fjern tomme elementer ved hjælp af erase()

til ( int itr = 1 ; itr < virksomheder. størrelse ( ) ; ++ itr ) {

hvis ( virksomheder. ( itr ) == '' ) {

virksomheder. slette ( virksomheder. begynde ( ) + itr ) ;

-- itr ;

}
}

// Vis vektoren


til ( auto & jeg : virksomheder ) {

cout << jeg << endl ;

}

}

Produktion:

Nu holder 'virksomheder'-vektoren de ikke-tomme strenge.

Skriv en vektor til en tekstfil

Lad os diskutere, hvordan man skriver alle de elementer, der er til stede i en vektor til en fil ved hjælp af vektorindeksene ved hjælp af fstream .

  1. Skub nogle elementer ind i den ved hjælp af push_back-funktionen efter initialisering af vektoren.
  2. Brug funktionen open() fra 'fstream'-biblioteket med tilstanden som ude.
  3. Gennemse hvert element, der er til stede i vektoren, ved hjælp af indekserne i en 'for'-løkke, og skriv hvert element til den medfølgende fil.
  4. Luk til sidst filen.

Lad os implementere den tidligere tilgang ved at køre en C++ kode.

#inkluder

#inkluder

#include

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Opret en vektor - v_data

// og skub to elementer ind i den.

vektor < snor > v_data ;

v_data. skub tilbage ( 'Velkommen' ) ;

v_data. skub tilbage ( 'til LinuxHint' ) ;

strøm f ;



// Åbn filen

f. åben ( 'written_file.txt' ,ios_base :: ud ) ;

// Gentag hvert element i vektoren og skriv til filen én efter én.

til ( int jeg = 0 ; jeg < v_data. størrelse ( ) ; jeg ++ )

{

f << v_data [ jeg ] << endl ;

}

// Luk filen

f. tæt ( ) ;

}

Produktion:

'v_data' vektoren indeholder to elementer, og en fil oprettes i stien, hvor programmet udføres med de elementer, der er til stede i vektoren.

Opret en vektor fra en tekstfil

Vi lærte, hvordan man skriver de elementer, der er til stede i vektoren, til en tekstfil. Lad os her oprette en vektor fra indholdet, der er til stede i tekstfilen.

  1. Opret en ' ifstream' variabel, som bruges til at læse informationen fra tekstfilen, hvori vi opretter vektoren fra filen.
  2. Opret en tom vektor for at gemme filindholdet og brug en tom strengvariabel som et flag for at kontrollere slutningen af ​​filen.
  3. Læs den næste linje fra filen, indtil den når slutningen (grundlæggende ved at bruge 'mens'-løkken). Brug push_back()-funktionen til at læse den næste linje og skubbe den ind i vektoren.
  4. Vis linjen, der er til stede i linjen, separat for at se de elementer, der er til stede i vektoren på konsollen.

Lad os implementere den tidligere tilgang ved at køre C++-koden. Lad os overveje filen 'data.txt' med følgende indhold. Her er navnet på vektoren 'v_data'.

#include

ved brug af navneområde std ;

vigtigste ( )

{

// Åbn tekstfilen - data
ifstream-fil ( 'data.txt' ) ;

// Opret vektor - v_data af typen - streng


vektor < snor > v_data ;

thong var ;

// Læs næste linje fra data.txt
// indtil den når slutningen.


mens ( fil >> var ) {

// Læs næste linje og tryk ind i v_data

v_data. skub tilbage ( var ) ;

}



// Vis linjen til stede i linjen separat.

kopi ( v_data. begynde ( ) , v_data. ende ( ) , ostream_iterator < snor > ( cout , ' \n ' ) ) ;

}

Produktion:

Vi kan se, at 'v_data' indeholder fem elementer, der kom fra filen.

Konklusion

I denne lange artikel undersøgte vi alle de mulige eksempler, der bruges i realtidsapplikationer relateret til vektorer i C++ programmeringssproget. Hvert eksempel er forklaret med syntaks, parametre og eksempel med output. Kommentarer tilføjes i hver kode for at få en klar forståelse af koden.