30 Eksempler på C++-vektorene

30 Eksempler Pa C Vektorene



I C++ er Vector en endimensjonal datastruktur som dynamisk øker seg selv basert på kravet. Dataorganisering (innsetting/modifisering/sletting) kan gjøres effektivt i denne datastrukturen. Dens applikasjoner inkluderer følgende:

  1. Representerer matematiske vektorer i vitenskapelige og tekniske applikasjoner
  2. Køer, stabler kan implementeres ved hjelp av denne datastrukturen, etc.

De fleste vanlige CRUD-operasjoner og funksjoner knyttet til denne datastrukturen diskuteres scenariomessig i detalj med syntaks og kodebiter.







Emne for innhold:

  1. Sett inn et element i en vektor
  2. Sett inn flere elementer i en vektor
  3. Få tilgang til elementene fra en vektor
  4. Oppdater elementet i en vektor
  5. Fjern et spesifikt element fra en vektor
  6. Fjern alle elementer fra en vektor
  7. Union of Vectors
  8. Kryss av vektorer
  9. Sjekk om vektoren er tom eller ikke
  10. Traversere en vektor ved hjelp av Const_Iterator
  11. Traversere en vektor ved å bruke Reverse_Iterator
  12. Skyv elementene inn i vektoren
  13. Pop elementene fra vektoren
  14. Bytt ut vektorene
  15. Hent det første elementet fra vektoren
  16. Hent det siste elementet fra vektoren
  17. Tilordne nye verdier til en vektor
  18. Utvid vektoren med Emplace()
  19. Utvid vektoren ved å bruke Emplace_Back()
  20. Maksimal element av en vektor
  21. Minimumselement av en vektor
  22. Summen av elementer i en vektor
  23. Element-vis multiplikasjon av to vektorer
  24. Punktprodukt av to vektorer
  25. Konverter et sett til en vektor
  26. Fjern de dupliserte elementene
  27. Konverter en vektor til et sett
  28. Fjern de tomme strengene
  29. Skriv en vektor til en tekstfil
  30. Lag en vektor fra en tekstfil

Sett inn et element i en vektor

De std::vector::insert() funksjon i C++ STL brukes til å sette inn elementene på den angitte posisjonen.



Syntaks:

vektor. sett inn ( posisjon, element ) ;

La oss bruke denne funksjonen og sende den første posisjonen som en parameter som spesifiserer posisjonen der elementet må settes inn og gi elementet som den andre parameteren.



Start()-funksjonen kan brukes her for å returnere en iterator som peker til det første elementet i inngangsvektoren. Ved å legge til posisjonen til denne funksjonen, settes elementet inn i den posisjonen.





La oss lage 'student_names'-vektoren av typen streng og sette inn to strenger på den første og andre posisjonen, etter hverandre, ved å bruke insert()-funksjonen.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Initialiserer vektoren - elevnavn

vektor < streng > student_names ;

cout << 'Eksisterende vektor: \n ' ;

til ( auto Jeg : student_names ) cout << Jeg << endl ;

// Sett inn 'Sravan Kumar' ved første posisjon

elevnavn. sett inn ( elevnavn. begynne ( ) + 0 , 'Shravan Kumar' ) ;

// Sett inn 'Sravan Kumar' i den andre posisjonen

elevnavn. sett inn ( elevnavn. begynne ( ) + 1 , 'Lalitha' ) ;

cout << 'Siste vektor: \n ' ;

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

}

Produksjon:

Tidligere var «student_names»-vektoren tom. Etter innsetting inneholder vektoren to elementer.



Sett inn flere elementer i en vektor

Vi bruker samme funksjon som er std::vector::insert() i dette scenariet. Men vi må sende de ekstra/forskjellige parameterne til samme funksjon for å sette inn flere elementer i en vektor.

Scenario 1: Sette inn et enkelt element flere ganger

I dette scenariet legger vi til det samme elementet flere ganger.

Syntaks:

vektor. sett inn ( posisjon, størrelse, element ) ;

For å gjøre dette må vi sende størrelsen som den andre parameteren til insert()-funksjonen. Det totale antallet parametere som sendes til denne funksjonen er tre.

Her:

  1. Posisjonsparameteren spesifiserer elementposisjonen som skal settes inn. Hvis størrelsen er større enn 1, vil startposisjonsindeksen være posisjonen.
  2. Størrelsesparameteren angir antall ganger et element skal settes inn.
  3. Elementparameteren tar elementet som skal settes inn i en vektor.

Tenk på vektoren 'studentnavn' med to strenger. Sett inn 'Lavanya'-strengene fem ganger i den andre posisjonen.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Initialiserer vektoren - elevnavn

vektor < streng > student_names { 'Shravan Kumar' , 'Lalitha' } ;

cout << 'Eksisterende vektor: \n ' ;

til ( auto Jeg : student_names ) cout << Jeg << endl ;

// Sett inn 'Lavanya' på den andre posisjonen 5 ganger

elevnavn. sett inn ( elevnavn. begynne ( ) + 1 , 5 , 'Lavanya' ) ;

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

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

}

Produksjon:

I den eksisterende vektoren er 'Sravan Kumar' i første posisjon og 'Lalitha' i andre posisjon. Etter å ha satt inn 'Lavanya' fem ganger (fra den andre posisjonen til den sjette posisjonen), flyttet 'Lalitha' til den syvende posisjonen (siste).

Scenario 2: Sette inn flere elementer

I dette scenariet legger vi til de forskjellige elementene om gangen fra en annen vektor. Vi bruker også samme funksjon her, men syntaksen og parameterne vil endres.

Syntaks:

vektor. sett inn ( posisjon, første_iterator, andre_iterator ) ;

For å gjøre dette må vi sende størrelsen som den andre parameteren til insert()-funksjonen. Det totale antallet parametere som sendes til denne funksjonen er tre.

Her:

  1. Posisjonsparameteren spesifiserer elementposisjonen som skal settes inn.
  2. 'first_iterator' spesifiserer startposisjonen som elementene skal settes inn fra (i utgangspunktet, ved å bruke start()-funksjonen, returneres en iterator som peker til det første elementet som finnes i beholderen).
  3. 'Second_iterator' spesifiserer sluttposisjonen som elementene skal settes inn til (i utgangspunktet, ved å bruke end()-funksjonen, returneres en iterator som peker ved siden av det siste punktet som er tilstede i beholderen).

Lag to vektorer, 'marks1' og 'marks2', av heltallstype. Sett inn alle elementene som er tilstede i 'marks2'-vektoren i den første posisjonen til 'marks1'-vektoren.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Initialisering av vektoren - merker1

vektor < int > merker 1 { 100 , 89 , 90 , 78 , 98 } ;

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

til ( auto Jeg : merker 1 ) cout << Jeg << endl ;

// Initialisering av vektoren - merker2

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

cout << 'Andre vektor: \n ' ;

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

merker 1. sett inn ( begynne ( merker 1 ) , begynne ( merker 2 ) , slutt ( merker 2 ) ) ;



// Endelig vektor

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

til ( auto x : merker 1 )

cout << x << ' ' ;

}

Produksjon:

Den første vektoren (marks1) inneholder fem elementer og den andre vektoren (marks2) inneholder tre elementer. Vi sendte parameterne start (marks1), begin(marks2), end(marks2) til 'insert'-funksjonen slik at alle elementene som er tilstede i den andre vektoren itereres og settes inn i den første vektoren i begynnelsen. Så den første vektoren inneholder åtte elementer.

Få tilgang til elementene fra en vektor

1. Bruke []-operatøren

I noen scenarier kan du ha et krav om å returnere bare de spesifikke elementene fra vektoren. Det er ikke nødvendig å returnere alle elementene. Så for å returnere bare de spesifikke elementene basert på indeksen, brukes indeksoperatoren og at()-funksjonene.

Syntaks:

vektor [ indeksposisjon ]

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

Tenk på 'produkter'-vektoren med fem elementer. Få tilgang til alle elementene en etter en ved å bruke indeksposisjonen.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - produkter med 5 strenger

vektor < streng > Produkter { 'såpe' , 'sjampo' , 'olje' , 'frukt' , 'grønnsaker' } ;

//Tilgang til elementer fra produktene

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

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

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

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

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



// Prøv å få tilgang til 9. element

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

}

Produksjon:

Det er ikke noe element til stede ved indeks 8. Så tomme returneres.

2. Bruke At()-funksjonen

At() er en medlemsfunksjon som ligner på det tidligere brukstilfellet, men den returnerer unntaket 'std::out_of_range' når indeksen utenfor rekkevidde er gitt til den.

Syntaks:

vektor. ( indeksposisjon )

Vi må overføre indeksposisjonen til denne funksjonen.

Tenk på 'produkter'-vektoren med fem elementer. Få tilgang til alle elementene en etter en ved å bruke indeksposisjonen og prøv å få tilgang til elementet som er tilstede på 9. posisjon.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - produkter med 5 strenger

vektor < streng > Produkter { 'såpe' , 'sjampo' , 'olje' , 'frukt' , 'grønnsaker' } ;

//Tilgang til elementer fra produktene

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

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

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

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

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



//Tilgang til elementene som ikke er i vektoren

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

}

Produksjon:

Det oppstår en feil ved tilgang til det niende elementet:

terminate kalt etter å ha kastet en forekomst av 'std::out_of_range'

hva ( ) : vektor :: _M_range_check : __n ( som er 8 ) >= dette - > størrelse ( ) ( som er 5 )

Oppdater et element i en vektor

1. Bruke []-operatøren

Ved å bruke indeksposisjonen kan vi oppdatere elementet i vektoren. Operatoren [] tar indeksposisjonen til elementet som må oppdateres. Det nye elementet vil bli tildelt denne operatøren.

Syntaks:

Vektor [ indeksposisjon ] = Element

Tenk på 'student_marks'-vektoren med fem verdier. Oppdater elementene i indeksene 1 og 3.

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - student_merker

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

cout << 'Eksisterende merker: ' << endl ;

til ( int itr : student_karakterer )

cout << itr << endl ;

// Oppdater element ved indeks-3 med 100

student_karakterer [ 3 ] = 100 ;

// Oppdater element ved indeks-1 med 60

student_karakterer [ 1 ] = 60 ;

cout << 'Endekarakterer: ' << endl ;

til ( int itr : student_karakterer )

cout << itr << endl ;

}

Produksjon:

Vi kan se at den endelige vektoren inneholder oppdateringselementene ved indeksene 1 og 3.

2. Bruke At()-funksjonen

I likhet med indeksoperatoren er at() i utgangspunktet en medlemsfunksjon som oppdaterer verdien basert på indeksen i en iterator. Hvis indeksen som er spesifisert i denne funksjonen ikke eksisterer, blir unntaket 'std::out_of_range' kastet.

vektor. ( indeksposisjon ) = Element

Tenk på 'produkter'-vektoren med fem elementer. Oppdater alle elementene i vektoren med andre elementer.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - produkter med 5 strenger

vektor < streng > Produkter { 'såpe' , 'sjampo' , 'olje' , 'frukt' , 'grønnsaker' } ;

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

til ( streng itr : Produkter )

cout << itr << endl ;

//Oppdaterer alle strengene

Produkter. ( 0 ) = 'Kake' ;

Produkter. ( 1 ) = 'Sjokolade' ;

Produkter. ( 2 ) = 'Frukt' ;

Produkter. ( 3 ) = 'løk' ;

Produkter. ( 4 ) = 'Brus' ;



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

til ( streng itr : Produkter )

cout << itr << endl ;

}

Produksjon:

Fjern et spesifikt element fra en vektor

I C++ er std::vektor::slett() funksjon brukes til å fjerne et spesifikt element/område av elementer fra en vektor. Elementene fjernes basert på iteratorposisjonene.

Syntaks:

vektor. viske ut ( iteratorposisjon )

La oss se syntaksen for å fjerne det spesifikke elementet fra en vektor. Vi kan bruke funksjonene begin() eller end() for å få posisjonen til elementet som er tilstede i vektoren som skal fjernes.

Tenk på 'produkter'-vektoren med fem elementer.

  1. Fjern det tredje elementet ved å spesifisere begin() iteratoren. Begin() peker på det første elementet i vektoren. Hvis vi legger til to til denne funksjonen, peker den på det tredje elementet.
  2. Fjern det siste elementet ved å spesifisere end() iteratoren. End() peker på det siste elementet i vektoren.
#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - produkter med 5 strenger

vektor < streng > Produkter { 'såpe' , 'sjampo' , 'olje' , 'frukt' , 'grønnsaker' } ;

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

til ( streng itr : Produkter )

cout << itr << endl ;



// Fjern 3. element

Produkter. viske ut ( Produkter. begynne ( ) + 2 ) ;

cout << ' \n Etter å ha fjernet det tredje elementet: \n ' ;

til ( streng itr : Produkter )

cout << itr << endl ;

// Fjern siste element

Produkter. viske ut ( Produkter. slutt ( ) ) ;

cout << ' \n Etter å ha fjernet det siste elementet: \n ' ;

til ( streng itr : Produkter )

cout << itr << endl ;

}

Produksjon:

Nå er det bare tre elementer ('såpe', 'sjampo', 'frukt') som eksisterer i 'produkt'-vektoren.

Fjern alle elementer fra en vektor

Scenario 1: Fjern en rekke elementer fra en vektor

La oss bruke funksjonen std::vector::erase() for å fjerne flere elementer i et område.

Syntaks:

vektor. viske ut ( iterator først, iterator sist )

De to iteratorene (begin() peker på det første elementet og end() peker på de siste elementfunksjonene) brukes til å spesifisere området.

Tenk på 'produkter'-vektoren med fem elementer og fjern alle elementene fra den andre posisjonen. For å oppnå dette er den første iteratoren start (produkter)+1 som peker til det andre elementet og den andre iteratoren er slutt (produkter).

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - produkter med 5 strenger

vektor < streng > Produkter { 'såpe' , 'sjampo' , 'olje' , 'frukt' , 'grønnsaker' } ;

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

til ( streng itr : Produkter )

cout << itr << endl ;



// Fjern alle elementene fra den andre posisjonen

Produkter. viske ut ( begynne ( Produkter ) + 1 ,slutt ( Produkter ) ) ;

cout << ' \n Sluttprodukter: \n ' ;

til ( streng itr : Produkter )

cout << itr << endl ;

}

Produksjon:

Nå er det bare ett element ('såpe') som er til stede i 'produkter'-vektoren.

Scenario 2: Fjern alle elementer fra vektoren

La oss bruke std::vector::clear() funksjon for å fjerne alle elementene fra vektoren.

Syntaks:

vektor. klar ( )

Ingen parametere sendes til denne funksjonen.

Tenk på den samme vektoren som ble brukt i det første scenariet og fjern alle elementene ved å bruke clear()-funksjonen.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - produkter med 5 strenger

vektor < streng > Produkter { 'såpe' , 'sjampo' , 'olje' , 'frukt' , 'grønnsaker' } ;

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

til ( streng itr : Produkter )

cout << itr << endl ;



// Fjern alle elementene fra produktene

Produkter. klar ( ) ;

cout << ' \n Sluttprodukter: \n ' ;

til ( streng itr : Produkter )

cout << itr << endl ;

}

Produksjon:

Vi kan se at det ikke er noen elementer i 'produkter'-vektoren.

Union of Vectors

Det er mulig å utføre UNION-operasjonen på vektorer ved å bruke std::set_union()-funksjonen. Union returnerer de unike elementene fra vektorene ved å ignorere de dupliserte elementene. Vi må overføre begge iteratorene til denne funksjonen. Sammen med dette må en utdataiterator passeres som lagrer resultatet som returneres av begge iteratorene.

Syntaks:

set_union ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;

Her:

  1. 'First1' peker på det første elementet i den første iteratoren (vektor).
  2. 'last1' peker på det siste elementet i den første iteratoren (vektor).
  3. 'First2' peker på det første elementet i den andre iteratoren (vektor).
  4. 'last2' peker på det siste elementet i den andre iteratoren (vektor).

Lag to vektorer - 'emner1' og 'emner2' - av typen heltall.

  1. Sorter de to vektorene ved å bruke sort()-funksjonen ved å sende iteratorene.
  2. Lag en utdatavektor (iterator).
  3. Finn foreningen av disse to vektorene ved å bruke std::set_union() funksjonen. Bruk begin() som den første iteratoren og end() som den siste iteratoren.
  4. Iterer utdatavektoren for å vise elementene som returneres av funksjonen.
#include

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - merker1

vektor < int > merker 1 = { 100 , 90 , 80 , 70 , 60 } ;



// Lag vektor - merker2

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

// Sorter begge vektorene

sortere ( merker 1. begynne ( ) , merker 1. slutt ( ) ) ;

sortere ( merker 2. begynne ( ) , merker 2. slutt ( ) ) ;

vektor < int > outputVector ( merker 1. størrelse ( ) + merker 2. størrelse ( ) ) ;

vektor < int > :: iterator er ;

Jeg = set_union ( merker 1. begynne ( ) , merker 1. slutt ( ) ,

merker 2. begynne ( ) ,merker 2. slutt ( ) ,

outputVector. begynne ( ) ) ;

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

til ( s = outputVector. begynne ( ) ; s ! = Jeg ; ++ s )

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

}

Produksjon:

Det er bare fem unike elementer i begge vektorene (emne1 og fag2).

Skjæringspunktet mellom vektorer

Å finne skjæringspunktet mellom to vektorer kan være mulig ved å bruke std::set_intersection()-funksjonen. Kryss returnerer elementene som er tilstede i begge vektorene.

Syntaks:

sett_kryss ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;

Parametrene som sendes til set_union()-funksjonen kan også sendes til denne set_intersection()-funksjonen.

Lag to vektorer - 'emner1' og 'emner2' - av typen heltall.

  1. Sorter de to vektorene ved å bruke sort()-funksjonen ved å sende iteratorene.
  2. Lag en utdatavektor (iterator).
  3. Finn skjæringspunktet mellom disse to vektorene ved å bruke std::set_intersection()-funksjonen. Bruk begin() som den første iteratoren og end() som den siste iteratoren.
  4. Iterer utdatavektoren for å vise elementene som returneres av funksjonen.
#include

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - merker1

vektor < int > merker 1 = { 100 , 10 , 80 , 40 , 60 } ;



// Lag vektor - merker2

vektor < int > merker 2 = { femti , 90 , 60 , 10 , 100 } ;

// Sorter begge vektorene

sortere ( merker 1. begynne ( ) , merker 1. slutt ( ) ) ;

sortere ( merker 2. begynne ( ) , merker 2. slutt ( ) ) ;

vektor < int > outputVector ( merker 1. størrelse ( ) + merker 2. størrelse ( ) ) ;

vektor < int > :: iterator er ;

Jeg = sett_kryss ( merker 1. begynne ( ) , merker 1. slutt ( ) ,

merker 2. begynne ( ) ,merker 2. slutt ( ) ,

outputVector. begynne ( ) ) ;

cout << ' \n merker1 ∩ merker2: \n ' ;

til ( s = outputVector. begynne ( ) ; s ! = Jeg ; ++ s )

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

}

Produksjon:

Det er bare tre elementer til stede i begge vektorene (emne1 og subjekter2).

Sjekk om vektoren er tom eller ikke

Før du arbeider med vektorer er det viktig å sjekke om vektoren er tom eller ikke. Det er også en god praksis i programvareprosjekter å sjekke om vektoren er tom eller ikke før du utfører operasjonene som CRUD-operasjoner osv.

1. Bruke Std::vector::empty()

Denne funksjonen returnerer 1 hvis vektoren er tom (inneholder ikke noe element). Ellers returneres 0. Ingen parameter sendes til denne funksjonen.

2. Ved å bruke Std::vektor::størrelse()

Std::vector::size()-funksjonen returnerer heltallet som representerer det totale antallet elementer som finnes i vektoren.

Lag to vektorer - 'college1' og 'college2'. 'College1' inneholder fem elementer og 'college2' er tom. Bruk begge funksjonene på begge vektorene og kontroller utdataene.

#include

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - college1

vektor < streng > høyskole1 = { 'college-A' , 'college-B' , 'college-C' , 'college-D' , 'college-E' } ;

// Lag vektor - college2

vektor < streng > høyskole2 ;

// tomme()

cout << høyskole1. tømme ( ) << endl ;

cout << høyskole2. tømme ( ) << endl ;

// størrelse()

cout << høyskole1. størrelse ( ) << endl ;

cout << høyskole2. størrelse ( ) << endl ;

}

Produksjon:

Den tomme()-funksjonen returnerer 0 for 'college1' og 1 for 'college2'. Størrelse()-funksjonen returnerer fem for 'college1' og 0 for 'college2'.

Traversere en vektor ved å bruke Const_Iterator

Når du jobber med C++-beholdere som sett, vektorer osv., er det mulig å iterere over alle elementene som finnes i beholderen uten å endre dem. De const_iterator er en av iteratorene som oppnår dette scenariet. cbegin() (peker på det første elementet i vektoren) og cend() (peker på det siste elementet i vektoren) er de to funksjonene gitt av hver beholder som brukes til å returnere konstant iteratoren til begynnelsen og slutten av beholderen. Mens vi itererer vektoren, kan vi bruke disse to funksjonene.

  1. La oss lage en vektor kalt 'avdelinger' med fem strenger.
  2. Deklarer en const_iterator – ctr av typen .
  3. Iterer over avdelingene ved å bruke den forrige iteratoren ved å bruke 'for'-løkken og vis den.
#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - avdelinger

vektor < streng > avdelinger = { 'Salg' , 'Service' ,

'HR' , 'DEN' , 'Andre' } ;



vektor < streng > :: konst_iterator ctr ;

// Iterer over avdelingene ved hjelp av const_iterator - ctr.

til ( ctr = avdelinger. cbegynn ( ) ; ctr ! = avdelinger. Noen ( ) ; ctr ++ ) {

cout << * ctr << endl ;

}

}

Produksjon:

Traversere en vektor ved hjelp av Reverse_Iterator

De reverse_iterator er også en iterator som ligner på const_iterator, men den returnerer elementene i revers. rbegin() (peker på det siste elementet i vektoren) og rend() (peker på det første elementet i vektoren) er de to funksjonene som leveres av hver beholder som brukes til å returnere den konstante iteratoren til slutten og begynnelsen av beholderen.

  1. La oss lage en vektor kalt 'avdelinger' med fem strenger.
  2. Erklær en reverse_iterator – rtr av typen .
  3. Iterer over avdelingene ved å bruke den forrige iteratoren ved å bruke 'for'-løkken og vis den.
#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - avdelinger

vektor < streng > avdelinger = { 'Salg' , 'Service' ,

'HR' , 'DEN' , 'Andre' } ;



vektor < streng > :: reverse_iterator rtr ;

// Iterer over avdelingene ved å bruke reverse_iterator - rtr.

til ( rtr = avdelinger. begynne ( ) ; rtr ! = avdelinger. gjør at ( ) ; rtr ++ ) {

cout << * rtr << endl ;

}

}

Produksjon:

Skyv elementene inn i vektoren

Å skyve eller legge til elementene i en vektor er en enveisinnsetting som kan gjøres ved å bruke vector::push_back() funksjon.

Syntaks:

vektor. push_back ( element )

Det krever at et element skyves inn i vektoren som en parameter.

La oss lage en tom vektor kalt 'avdelinger' med fem strenger og skyve to strenger etter hverandre ved å bruke push_back()-funksjonen.

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Initialiser vektor - avdelinger

vektor < streng > avdelinger ;

cout << 'Faktiske avdelinger:' << endl ;

til ( auto itr = avdelinger. begynne ( ) ; itr ! = avdelinger. slutt ( ) ; ++ itr )

cout << * itr << endl ;

// Trykk 'Salg'

avdelinger. push_back ( 'Salg' ) ;

// Skyv den'

avdelinger. push_back ( 'DEN' ) ;

cout << ' \n Avsluttende avdelinger:' << endl ;

til ( auto itr = avdelinger. begynne ( ) ; itr ! = avdelinger. slutt ( ) ; ++ itr )

cout << * itr << endl ;

}

Produksjon:

Først trykker vi på 'Salg'. Etter det skyves 'IT' inn i vektoren. Nå inneholder vektoren 'avdelinger' to elementer.

Pop elementene fra vektoren

Hvis du vil slette det siste elementet som er til stede i vektoren, bruker du vector::pop_back() funksjon er den beste tilnærmingen. Den sletter det siste elementet som er tilstede i vektoren.

Syntaks:

vektor. pop_back ( )

Ingen parameter er nødvendig for denne funksjonen. Den viser den udefinerte oppførselen hvis vi prøver å slette det siste elementet fra en tom vektor.

La oss lage en tom vektor kalt 'avdelinger' med fem strenger og slette det siste elementet ved å bruke forrige funksjon. Vis vektoren i begge tilfeller.

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Initialiser vektor - avdelinger

vektor < streng > avdelinger = { 'Salg' , 'DEN' , 'Service' , 'Markedsføring' , 'HR' } ;

cout << 'Faktiske avdelinger:' << endl ;

til ( auto itr = avdelinger. begynne ( ) ; itr ! = avdelinger. slutt ( ) ; ++ itr )

cout << * itr << endl ;



// Slett det siste elementet

avdelinger. pop_back ( ) ;

cout << ' \n Avsluttende avdelinger:' << endl ;

til ( auto itr = avdelinger. begynne ( ) ; itr ! = avdelinger. slutt ( ) ; ++ itr )

cout << * itr << endl ;

}

Produksjon:

'HR' er det siste elementet som er tilstede i 'avdelings'-vektoren. Så den fjernes fra vektoren og den siste vektoren inneholder 'Salg', 'IT', 'Service' og 'Markedsføring'.

Bytt ut vektorene

De vektor::swap() funksjon i C++ STL brukes til å bytte alle elementene som er tilstede i to vektorer.

Syntaks:

første_vektor. bytte ( andre_vektor )

Den tar ikke hensyn til størrelsen på vektorene, men vektorene bør være av samme type (feil oppstår hvis vektortypene er forskjellige).

La oss lage to vektorer - 'frukt' og 'grønnsaker' - av strengtype med forskjellige størrelser. Bytt hver av dem og vis vektorene i begge tilfeller.

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Initialiser vektor - frukter

vektor < streng > frukt = { 'Eple' , 'Mango' } ;

cout << 'Faktiske frukter:' << endl ;

til ( auto itr = frukt. begynne ( ) ; itr ! = frukt. slutt ( ) ; ++ itr )

cout << * itr << endl ;



// Initialiser vektor - grønnsaker

vektor < streng > grønnsaker = { 'Potet' , 'Tomat' , 'Brinjal' } ;

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

til ( auto itr = grønnsaker. begynne ( ) ; itr ! = grønnsaker. slutt ( ) ; ++ itr )

cout << * itr << endl ;



// Bytt om elementene i begge vektorene

frukt. bytte ( grønnsaker ) ;

cout << ' \n Frukt etter bytte:' << endl ;

til ( auto itr = frukt. begynne ( ) ; itr ! = frukt. slutt ( ) ; ++ itr )

cout << * itr << endl ;

cout << ' \n Grønnsaker etter bytte:' << endl ;

til ( auto itr = grønnsaker. begynne ( ) ; itr ! = grønnsaker. slutt ( ) ; ++ itr )

cout << * itr << endl ;

}

Produksjon:

Tidligere har 'frukt'-vektoren to elementer og 'grønnsaker'-vektoren har tre elementer. Etter å ha byttet, inneholder 'frukt'-vektoren tre elementer og 'grønnsaker'-vektoren har to elementer.

Hent det første elementet fra vektoren

I noen tilfeller er kravet å returnere kun det første elementet fra vektoren. Vector::front()-funksjonen i C++ STL henter bare det første elementet fra vektoren.

Syntaks:

vektor. front ( )

Denne funksjonen tar ikke noen parameter. Hvis vektoren er tom, oppstår en feil.

La oss lage to vektorer - 'frukt' og 'grønnsaker' - av strengtype og prøve å hente det første elementet separat fra de to vektorene.

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - frukt med 2 elementer

vektor < streng > frukt = { 'Eple' , 'Mango' } ;

// Returner det første elementet

cout << frukt. front ( ) << endl ;



// Initialiser vektor - grønnsaker

vektor < streng > grønnsaker ;

// Prøv å returnere det første elementet

cout << grønnsaker. front ( ) ;

}

Produksjon:

'Eple' er det første elementet som er til stede i 'frukt'-vektoren. Så den er returnert. Men en feil blir kastet når vi prøver å hente det første elementet fra 'grønnsaker'-vektoren siden det er tomt.

Hent det siste elementet fra vektoren

Vector::end()-funksjonen i C++ STL henter bare det siste elementet fra vektoren.

Syntaks:

vektor. tilbake ( )

Denne funksjonen tar ikke noen parameter. Hvis vektoren er tom, oppstår en feil.

La oss lage to vektorer - 'frukt' og 'grønnsaker' - av strengtype og prøve å hente det siste elementet separat fra de to vektorene.

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - frukt med 2 elementer

vektor < streng > frukt = { 'Eple' , 'Mango' } ;

// Hent det siste elementet

cout << frukt. tilbake ( ) << endl ;



// Initialiser vektor - grønnsaker

vektor < streng > grønnsaker ;

// Prøv å hente det siste elementet

cout << grønnsaker. tilbake ( ) ;

}

Produksjon:

'Mango' er det siste elementet som er tilstede i 'frukt'-vektoren. Så den er returnert. Men en feil blir kastet når vi prøver å hente det siste elementet fra 'grønnsaker'-vektoren siden det er tomt.

Tilordne nye verdier til en vektor

I noen scenarier, hvis du vil oppdatere alle verdiene med den nye verdien eller lage en vektor med de samme verdiene, er bruk av vector::assign()-funksjonen den beste tilnærmingen. Ved å bruke denne funksjonen kan vi:

  1. Lag vektoren med alle lignende elementer
  2. Endre den eksisterende vektoren med det samme elementet

Syntaks:

vektor. tildele ( størrelse, verdi )

To parametere kreves for denne funksjonen.

Her:

  1. Størrelsen angir antall elementer som skal tilordnes.
  2. Verdien spesifiserer elementet som skal tilordnes.

La oss lage en vektor kalt 'marks1' med fem verdier og oppdatere denne vektoren med fire elementer slik at alle elementene i den oppdaterte vektoren er lik 20.

#include

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - merker1

vektor < int > merker 1 = { 100 , 90 , 80 , 70 , 60 } ;

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

til ( int Jeg = 0 ; Jeg < merker 1. størrelse ( ) ; Jeg ++ )

cout << merker 1 [ Jeg ] << endl ;



merker 1. tildele ( 4 , tjue ) ;



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

til ( int Jeg = 0 ; Jeg < merker 1. størrelse ( ) ; Jeg ++ )

cout << merker 1 [ Jeg ] << endl ;

}

Produksjon:

Tidligere har vektoren fem forskjellige elementer. Nå inneholder den bare fire elementer og alle er lik 20.

Utvid vektoren med Emplace()

Vi vet allerede at nye elementer settes inn dynamisk på en hvilken som helst posisjon i en vektor. Det er mulig å bruke vektoren::emplace()-funksjonen. La oss raskt se på syntaksen og parameterne som aksepteres av denne funksjonen.

Syntaks:

vektor. plassering ( const_iterator posisjon, element )

To obligatoriske parametere sendes til denne funksjonen.

Her:

  1. Den første parameteren tar posisjonen slik at vi kan sette inn elementet i hvilken som helst posisjon. Vi kan få posisjonen ved å bruke start() eller end() iteratorfunksjonen.
  2. Den andre parameteren er elementet som skal settes inn i vektoren.

Tenk på 'kjemikalier'-vektoren med to elementer.

  1. Sett inn 'Mangan' i den første posisjonen - begynn (kjemikalier)
  2. Sett inn 'Kobber' i siste posisjon - ende(kjemikalier)
  3. Sett inn 'Svovel' i den tredje posisjonen - start(kjemikalier)+2
#include

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - kjemikalier

vektor < streng > kjemikalier = { 'Oksygen' , 'CO' } ;

cout << 'Faktiske kjemikalier:' << endl ;

til ( int Jeg = 0 ; Jeg < kjemikalier. størrelse ( ) ; Jeg ++ )

cout << kjemikalier [ Jeg ] << endl ;



// Sett inn element i den første posisjonen

kjemikalier. plassering ( begynne ( kjemikalier ) , 'Mangan' ) ;



// Sett inn element på siste posisjon

kjemikalier. plassering ( slutt ( kjemikalier ) , 'Kobber' ) ;



// Sett inn element i tredje posisjon

kjemikalier. plassering ( begynne ( kjemikalier ) + 2 , 'Svovel' ) ;



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

til ( int Jeg = 0 ; Jeg < kjemikalier. størrelse ( ) ; Jeg ++ )

cout << kjemikalier [ Jeg ] << endl ;

}

Produksjon:

Nå inneholder den endelige vektoren fem elementer (gitt i følgende skjermbilde).

Utvid vektoren ved å bruke Emplace_Back()

Et element kan legges til (legge til på slutten av vektoren) som kan gjøres ved å bruke vector::emplace_back() funksjon.

Syntaks:

vektor. emplace_back ( element )

Det er obligatorisk å sende elementet som skal legges til vektoren som en parameter.

La oss legge til to elementer etter hverandre ved å bruke emplace_back()-funksjonen.

#include

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - kjemikalier

vektor < streng > kjemikalier = { 'Oksygen' , 'CO' } ;

cout << 'Faktiske kjemikalier:' << endl ;

til ( int Jeg = 0 ; Jeg < kjemikalier. størrelse ( ) ; Jeg ++ )

cout << kjemikalier [ Jeg ] << endl ;



// Sett inn mangan på slutten av vektoren

kjemikalier. emplace_back ( 'Mangan' ) ;



// Sett inn mangan på slutten av vektoren

kjemikalier. emplace_back ( 'Kobber' ) ;





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

til ( int Jeg = 0 ; Jeg < kjemikalier. størrelse ( ) ; Jeg ++ )

cout << kjemikalier [ Jeg ] << endl ;

}

Produksjon:

Nå inneholder den endelige vektoren fire elementer etter å ha lagt til 'Mangan' og 'Kobber'.

Maksimal element av en vektor

  1. Lag en vektor med noen elementer.
  2. For å finne det maksimale elementet som finnes i vektoren, bruk *max_element()-funksjonen som godtar to iteratorer som argumenter. Disse to parameterne fungerer som området og maksimumselementet returneres innenfor det angitte området. Startposisjonen er start() og den siste posisjonen er end().
* max_element ( første_indeks, siste_indeks )

La oss vurdere en vektor kalt 'item_costs' som har fem heltallstypeverdier og returnerer det maksimale elementet.

#inkluder

#include

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - item_costs

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



cout << 'Kostnad for varer: \n ' ;

til ( int Jeg = 0 ; Jeg < item_costs. størrelse ( ) ; Jeg ++ )

cout << item_costs [ Jeg ] << endl ;



// Returner maksimumselementet fra vektoren ovenfor - item_costs

cout << ' \n Maksimal kostnad: ' << * max_element ( begynne ( item_costs ) ,slutt ( item_costs ) ) ;

}

Produksjon:

Her er 8900 det maksimale elementet blant alle elementene som er tilstede i vektoren 'vare_kostnader'.

Minimumselement av en vektor

  1. Lag en vektor med noen elementer.
  2. For å finne minimumselementet som finnes i vektoren, bruk *min_element()-funksjonen som godtar to iteratorer som argumenter. Disse to parameterne fungerer som området og minimumselementet (mindre enn alle de andre elementene) returneres innenfor det angitte området. Startposisjonen er start() og den siste posisjonen er end().
* min_element ( første_indeks, siste_indeks )

Bruk den samme vektoren som er opprettet for å finne maksimumselementet og finn minimumselementet ved å bruke *min_element()-funksjonen.

#inkluder

#include

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - item_costs

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



cout << 'Kostnad for varer: \n ' ;

til ( int Jeg = 0 ; Jeg < item_costs. størrelse ( ) ; Jeg ++ )

cout << item_costs [ Jeg ] << endl ;



// Returner minimumselementet fra vektoren ovenfor - item_costs

cout << ' \n Minimumskostnad: ' << * min_element ( begynne ( item_costs ) ,slutt ( item_costs ) ) ;

}

Produksjon:

Her er 200 minimumselementet blant alle elementene som er tilstede i 'vare_kostnader'-vektoren.

Summen av elementer i en vektor

For å returnere summen av alle elementene som er tilstede i vektoren, akkumulere() funksjon i C++ STL brukes. Den aksepterer tre parametere. Den første parameteren tar den første indeksen som representerer startelementet i området (spesifiser start()-iteratoren), og den andre parameteren tar den siste indeksen som representerer sluttelementet i området (spesifiser end()-iteratoren) . Til slutt må vi sende den innledende verdien av summen (i vårt tilfelle er den 0).

akkumulere ( first_index, last_index, initial_val ) ;

Lag en vektor kalt 'item_costs' med fem heltallstypeelementer og beregn summen.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag vektor - item_costs

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



cout << 'Kostnad for varer: \n ' ;

til ( int Jeg = 0 ; Jeg < item_costs. størrelse ( ) ; Jeg ++ )

cout << item_costs [ Jeg ] << endl ;



// Returner summen av alle elementene i vektoren ovenfor - item_costs

cout << ' \n Totalkostnad: ' << akkumulere ( begynne ( item_costs ) ,slutt ( item_costs ) , 0 ) ;

}

Produksjon:

Summen av 8900, 5677, 200, 1000, 2300 er 18077.

Element-vis multiplikasjon av to vektorer

  1. Lag to vektorer med typen numerisk og to vektorer må være av samme størrelse (totalt antall elementer tilstede i den første vektoren = totalt antall elementer til stede i den andre vektoren).
  2. Erklær en ny vektor og bruk for løkke , utfør multiplikasjonsoperasjonen på to elementer i hver iterasjon, og lagre verdien i den opprettede vektoren ved å bruke push_back()-funksjonen.
  3. til ( int itr = 0 ; Jeg < first_vec. størrelse ( ) ; itr ++ )

    {

    resultatvektor. push_back ( first_vec [ itr ] * sec_thing [ itr ] ) ;

    }
  4. Vis elementene som er tilstede i den resulterende vektoren ved å iterere den.

Lag en vektor kalt 'item_costs' med fem heltallstypeelementer og beregn summen.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

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

vektor < int > produkter 1 = { 10 , tjue , 30 , 40 , femti } ;

vektor < int > produkter2 = { femti , 40 , 30 , 70 , 60 } ;



vektor < int > resultat_produkter ;



// Utfør elementvis multiplikasjon

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

resultat_produkter. push_back ( produkter 1 [ Jeg ] * produkter2 [ Jeg ] ) ;

}



// Vis den resulterende vektoren

cout << 'Vektor multiplikasjon: \n ' ;

til ( int res : resultat_produkter )

cout << res << endl ;

}

Produksjon:

Iterasjon - 1 : 10 * femti => 500

Iterasjon - 2 : tjue * 40 => 800

Iterasjon - 3 : 30 * 30 => 900

Iterasjon - 4 : 40 * 70 => 2800

Iterasjon - 5 : femti * 60 => 3000

Punktprodukt av to vektorer

Når det gjelder C++-vektorer, er punktproduktet definert som 'summen av produktene til de tilsvarende oppføringene av de to sekvensene av vektorer'.

Syntaks:

indre_produkt ( Vector1 først, Vector1 sist, Vector2 first, Initial_Val )

Bruk funksjonen inner_product() for å returnere punktproduktet. Denne funksjonen tar fire nødvendige parametere.

Her:

  1. Den første parameteren refererer til en iterator som peker til begynnelsen av den første vektoren (spesifiser ved å bruke start()-funksjonen).
  2. Den andre parameteren refererer til en iterator som peker til slutten av den første vektoren (spesifiser ved å bruke end()-funksjonen).
  3. Den tredje parameteren refererer til en iterator som peker til begynnelsen av den andre vektoren (spesifiser ved å bruke start()-funksjonen).
  4. Startverdien må sendes som den siste parameteren, som er et heltall for akkumuleringen av punktproduktet.

Bruk det samme programmet som er laget for multiplikasjon av to vektorer og bruk funksjonen innsr_product() for å finne punktproduktet til de to vektorene.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

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

vektor < int > produkter 1 = { 10 , tjue , 30 , 40 , femti } ;

vektor < int > produkter2 = { femti , 40 , 30 , 70 , 60 } ;



// Vis den resulterende vektoren

cout << 'Prikk produkt av produkter1 og produkter2: ' ;

cout << indre_produkt ( begynne ( produkter 1 ) ,slutt ( produkter 1 ) ,begynne ( produkter2 ) , 0 ) ;

}

Produksjon:

( 10 * femti ) + ( tjue * 40 ) + ( 30 * 30 ) + ( 40 * 70 ) + ( femti * 60 )

=> 500 + 800 + 900 + 2800 + 3000

=> 8000

Konverter et sett til en vektor

Det er mange måter å konvertere et sett til en vektor ved å overføre alle elementene som er hevet i et sett til en vektor. Den beste og enkleste måten er å bruke std::copy()-funksjonen.

Syntaks

std :: kopiere ( sourceIterator først, sourceIterator sist, destinationIterator først )

Bruke std::copy() funksjon som setter inn elementene fra et sett i vektoren. Det krever tre parametere.

Her:

  1. Den første parameteren refererer til kildeiteratoren som peker til det første elementet i iteratoren. Her er set kildeiteratoren som er spesifisert ved hjelp av start()-funksjonen.
  2. På samme måte peker den andre parameteren til det siste elementet (end()-funksjonen).
  3. Den tredje parameteren refererer til destinasjonsiteratoren som peker til det første elementet (spesifisert med start()-funksjonen) i iteratoren.

La oss lage et sett med fem elever og kopiere alle elementene til en vektor ved hjelp av forrige funksjon.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag et sett - elever med 5 elementer

sett < streng > studenter = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' } ;

cout << 'Sett: \n ' ;

til ( streng i : studenter )

cout << Jeg << endl ;



// Create Vector - student_vcof størrelse lik størrelsen på settet

vektor < streng > student_vc ( studenter. størrelse ( ) ) ;



// Sett inn elementer fra et sett - studenter i en vektor - student_vc.

kopiere ( studenter. begynne ( ) , studenter. slutt ( ) , student_vc. begynne ( ) ) ;



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

til ( streng i : student_vc )

cout << Jeg << endl ;

}

Produksjon:

Nå blir alle elementene som er tilstede i 'Students'-settet kopiert inn i 'students_vc'-vektoren.

Fjern de dupliserte elementene

  1. Først må vi sortere elementene i vektoren slik at alle de dupliserte elementene vil være ved siden av hverandre ved å bruke std::sort() funksjon.
  2. std :: sortere ( Vektor først, vektor sist ) ;
  3. Bruk funksjonen std::unique() slik at de dupliserte elementene blir valgt. Bruk samtidig erase()-funksjonen for å fjerne duplikatene som returneres av std::unique()-funksjonen. Rekkefølgen på elementene kan endres i den endelige vektoren.
  4. vektor. viske ut ( std :: unik ( Vektor først, vektor sist ) , Vector sist ) )

Lag 'studenter'-vektoren med 10 elementer og returner vektoren ved å fjerne duplikatene.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag en vektor - elever med 10 elementer

vektor < streng > studenter = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' ,

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

cout << 'Studenter: \n ' ;

til ( streng i : studenter )

cout << Jeg << ' ' ;



// Sorter alle elementene i elevvektoren.

sortere ( begynne ( studenter ) , slutt ( studenter ) ) ;



// Bruk unike()-funksjonen for å fjerne duplikatene med erase()-funksjonen

studenter. viske ut ( unik ( begynne ( studenter ) , slutt ( studenter ) ) , slutt ( studenter ) ) ;



cout << ' \n \n Unike studenter: \n ' ;

til ( auto itr = cbegynn ( studenter ) ; itr ! = Noen ( studenter ) ; ++ itr ) {

cout << * itr << ' ' ;

}

}

Produksjon:

Nå er alle elementene unike i vektoren.

Konverter en vektor til et sett

Settet tillater ikke dupliserte elementer. Hvis du skriver for å sette inn en vektor i et sett med duplikater, vil de bli ignorert. Vi bruker den samme std::copy()-funksjonen som ble brukt i forrige scenario som konverterte settet til en vektor.

I dette scenariet:

  1. Den første parameteren tar vektoren som kildeiteratoren som er spesifisert med start()-funksjonen.
  2. Den andre parameteren tar vektoren som kildeiteratoren som er spesifisert ved bruk av end()-funksjonen.
  3. Pass std::inserter()-funksjonen som brukes til å overskrive/kopiere elementene automatisk på en bestemt posisjon i settet ved å gi settet og iteratoren som peker til slutten av settet som parametere.

La oss lage en vektor med 10 heltall og kopiere elementene til et sett.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag et sett - merker med 10 verdier

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

cout << 'Vektor: \n ' ;

til ( int Jeg : merker )

cout << Jeg << ' ' ;



// Create Set - marks_set av størrelsen lik størrelsen på vektoren

sett < int > merker_sett ;



// Sett inn elementer fra et sett - studenter i en vektor - student_vc.

kopiere ( begynne ( merker ) ,slutt ( merker ) , setter inn ( marks_set, end ( merker_sett ) ) ) ;



cout << ' \n \n Sett: \n ' ;

til ( int Jeg : merker_sett )

cout << Jeg << ' ' ;

}

Produksjon:

Den eksisterende vektoren kalt 'merker' har 10 verdier. Etter å ha kopiert det inn i 'marks_set'-settet, inneholder det bare seks elementer fordi de andre fire elementene er duplisert.

Fjern de tomme strengene

Det er ingen bruk av tomme strenger som er tilstede i en vektor. Det er en god praksis å fjerne de tomme strengene som finnes i vektoren. La oss se hvordan du fjerner de tomme strengene fra C++-vektoren:

  1. Iterer vektoren ved å bruke 'for'-løkken.
  2. I hver iterasjon, sjekk om elementet er tomt (“”) eller ikke ved å bruke “==”-operatoren med at()-medlemsfunksjonen.
  3. Ved å bruke std::erase()-funksjonen, fjern de tomme strengene etter å ha sjekket forrige tilstand.
  4. Gjenta trinn 2 og trinn 3 til slutten av vektoren.

La oss lage «bedrifter»-vektoren med 10 strenger. Blant dem er fem tomme, og vi fjerner dem ved å implementere den forrige tilnærmingen.

#include

#inkluder

ved hjelp av navneområde std ;

hoved- ( ) {



vektor < streng > selskaper { 'Company-A' , '' , 'Bedrift-B' ,

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



// Iterer over selskaper

// og fjern tomme elementer ved å bruke erase()

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

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

selskaper. viske ut ( selskaper. begynne ( ) + itr ) ;

-- itr ;

}
}

// Vis vektoren


til ( auto & Jeg : selskaper ) {

cout << Jeg << endl ;

}

}

Produksjon:

Nå har 'selskaper'-vektoren de ikke-tomme strengene.

Skriv en vektor til en tekstfil

La oss diskutere hvordan du skriver alle elementene som er tilstede i en vektor til en fil ved å bruke vektorindeksene ved å bruke fstream .

  1. Skyv noen elementer inn i den ved å bruke push_back-funksjonen etter initialisering av vektoren.
  2. Bruk open()-funksjonen fra 'fstream'-biblioteket med modusen som ut.
  3. Gå gjennom hvert element som er tilstede i vektoren ved å bruke indeksene i en 'for'-løkke og skriv hvert element til den angitte filen.
  4. Til slutt lukker du filen.

La oss implementere den forrige tilnærmingen ved å kjøre en C++-kode.

#inkluder

#inkluder

#include

#include

ved hjelp av navneområde std ;

hoved- ( )

{

// Lag en vektor - v_data

// og skyv to elementer inn i den.

vektor < streng > v_data ;

v_data. push_back ( 'Velkommen' ) ;

v_data. push_back ( 'til Linux hint' ) ;

strøm f ;



// Åpne filen

f. åpen ( 'written_file.txt' ,ios_base :: ute ) ;

// Iterer hvert element i vektoren og skriv til filen en etter en.

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

{

f << v_data [ Jeg ] << endl ;

}

// Lukk filen

f. Lukk ( ) ;

}

Produksjon:

'v_data' vektoren inneholder to elementer og en fil opprettes i banen der programmet kjøres med elementene som er tilstede i vektoren.

Lag en vektor fra en tekstfil

Vi lærte å skrive elementene som finnes i vektoren til en tekstfil. Her, la oss lage en vektor fra innholdet som er tilstede i tekstfilen.

  1. Lag en ' ifstream' variabel som brukes til å lese informasjonen fra tekstfilen der vi lager vektoren fra filen.
  2. Lag en tom vektor for å lagre filinnholdet og bruk en tom strengvariabel som flagg for å sjekke slutten av filen.
  3. Les neste linje fra filen til den når slutten (i utgangspunktet bruker du 'mens'-løkken). Bruk push_back()-funksjonen til å lese neste linje og skyve den inn i vektoren.
  4. Vis linjen som er tilstede i linjen separat for å se elementene som er tilstede i vektoren på konsollen.

La oss implementere den forrige tilnærmingen ved å kjøre C++-koden. La oss vurdere 'data.txt'-filen med følgende innhold. Her er navnet på vektoren 'v_data'.

#include

ved hjelp av navneområde std ;

hoved- ( )

{

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

// Lag vektor - v_data av typen - streng


vektor < streng > v_data ;

    string var ;

// Les neste linje fra data.txt
// til den når slutten.


samtidig som ( fil >> var ) {

// Les neste linje og trykk inn i v_data

v_data. push_back ( var ) ;

}



// Vis linjen som finnes i linjen separat.

kopiere ( v_data. begynne ( ) , v_data. slutt ( ) , ostream_iterator < streng > ( cout , ' \n ' ) ) ;

}

Produksjon:

Vi kan se at 'v_data' inneholder fem elementer som kom fra filen.

Konklusjon

I denne lange artikkelen utforsket vi alle mulige eksempler som brukes i sanntidsapplikasjoner relatert til vektorer i programmeringsspråket C++. Hvert eksempel er forklart med syntaks, parametere og eksempel med utdata. Kommentarer legges til i hver kode for å få en klar forståelse av koden.