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:
- Representerer matematiske vektorer i vitenskapelige og tekniske applikasjoner
- 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:
- Sett inn et element i en vektor
- Sett inn flere elementer i en vektor
- Få tilgang til elementene fra en vektor
- Oppdater elementet i en vektor
- Fjern et spesifikt element fra en vektor
- Fjern alle elementer fra en vektor
- Union of Vectors
- Kryss av vektorer
- Sjekk om vektoren er tom eller ikke
- Traversere en vektor ved hjelp av Const_Iterator
- Traversere en vektor ved å bruke Reverse_Iterator
- Skyv elementene inn i vektoren
- Pop elementene fra vektoren
- Bytt ut vektorene
- Hent det første elementet fra vektoren
- Hent det siste elementet fra vektoren
- Tilordne nye verdier til en vektor
- Utvid vektoren med Emplace()
- Utvid vektoren ved å bruke Emplace_Back()
- Maksimal element av en vektor
- Minimumselement av en vektor
- Summen av elementer i en vektor
- Element-vis multiplikasjon av to vektorer
- Punktprodukt av to vektorer
- Konverter et sett til en vektor
- Fjern de dupliserte elementene
- Konverter en vektor til et sett
- Fjern de tomme strengene
- Skriv en vektor til en tekstfil
- 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.
#includeved 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:
- Posisjonsparameteren spesifiserer elementposisjonen som skal settes inn. Hvis størrelsen er større enn 1, vil startposisjonsindeksen være posisjonen.
- Størrelsesparameteren angir antall ganger et element skal settes inn.
- 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.
#includeved 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:
- Posisjonsparameteren spesifiserer elementposisjonen som skal settes inn.
- '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).
- '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.
#includeved 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.
#includeved 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. på ( 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.
#includeved 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. på ( 0 ) << endl ;
cout << 'Andre element: ' << Produkter. på ( 1 ) << endl ;
cout << 'Tredje element: ' << Produkter. på ( 2 ) << endl ;
cout << 'Fjerde element: ' << Produkter. på ( 3 ) << endl ;
cout << 'Femte element: ' << Produkter. på ( 4 ) << endl ;
//Tilgang til elementene som ikke er i vektoren
cout << 'Niende element: ' << Produkter. på ( 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 ] = ElementTenk 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. på ( indeksposisjon ) = ElementTenk på 'produkter'-vektoren med fem elementer. Oppdater alle elementene i vektoren med andre elementer.
#includeved 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. på ( 0 ) = 'Kake' ;
Produkter. på ( 1 ) = 'Sjokolade' ;
Produkter. på ( 2 ) = 'Frukt' ;
Produkter. på ( 3 ) = 'løk' ;
Produkter. på ( 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.
- 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.
- Fjern det siste elementet ved å spesifisere end() iteratoren. End() peker på det siste elementet i vektoren.
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).
#includeved 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.
#includeved 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:
- 'First1' peker på det første elementet i den første iteratoren (vektor).
- 'last1' peker på det siste elementet i den første iteratoren (vektor).
- 'First2' peker på det første elementet i den andre iteratoren (vektor).
- 'last2' peker på det siste elementet i den andre iteratoren (vektor).
Lag to vektorer - 'emner1' og 'emner2' - av typen heltall.
- Sorter de to vektorene ved å bruke sort()-funksjonen ved å sende iteratorene.
- Lag en utdatavektor (iterator).
- 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.
- Iterer utdatavektoren for å vise elementene som returneres av funksjonen.
#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.
- Sorter de to vektorene ved å bruke sort()-funksjonen ved å sende iteratorene.
- Lag en utdatavektor (iterator).
- 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.
- Iterer utdatavektoren for å vise elementene som returneres av funksjonen.
#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.
- La oss lage en vektor kalt 'avdelinger' med fem strenger.
- Deklarer en const_iterator – ctr av typen
. - Iterer over avdelingene ved å bruke den forrige iteratoren ved å bruke 'for'-løkken og vis den.
#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.
- La oss lage en vektor kalt 'avdelinger' med fem strenger.
- Erklær en reverse_iterator – rtr av typen
. - Iterer over avdelingene ved å bruke den forrige iteratoren ved å bruke 'for'-løkken og vis den.
#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:
- Lag vektoren med alle lignende elementer
- Endre den eksisterende vektoren med det samme elementet
Syntaks:
vektor. tildele ( størrelse, verdi )To parametere kreves for denne funksjonen.
Her:
- Størrelsen angir antall elementer som skal tilordnes.
- 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:
- 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.
- Den andre parameteren er elementet som skal settes inn i vektoren.
Tenk på 'kjemikalier'-vektoren med to elementer.
- Sett inn 'Mangan' i den første posisjonen - begynn (kjemikalier)
- Sett inn 'Kobber' i siste posisjon - ende(kjemikalier)
- Sett inn 'Svovel' i den tredje posisjonen - start(kjemikalier)+2
#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
- Lag en vektor med noen elementer.
- 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().
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
- Lag en vektor med noen elementer.
- 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().
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.
#includeved 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
- 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).
- 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. til ( int itr = 0 ; Jeg < first_vec. størrelse ( ) ; itr ++ )
- Vis elementene som er tilstede i den resulterende vektoren ved å iterere den.
{
resultatvektor. push_back ( first_vec [ itr ] * sec_thing [ itr ] ) ;
}
Lag en vektor kalt 'item_costs' med fem heltallstypeelementer og beregn summen.
#includeved 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 => 500Iterasjon - 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:
- Den første parameteren refererer til en iterator som peker til begynnelsen av den første vektoren (spesifiser ved å bruke start()-funksjonen).
- Den andre parameteren refererer til en iterator som peker til slutten av den første vektoren (spesifiser ved å bruke end()-funksjonen).
- Den tredje parameteren refererer til en iterator som peker til begynnelsen av den andre vektoren (spesifiser ved å bruke start()-funksjonen).
- 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.
#includeved 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:
- 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.
- På samme måte peker den andre parameteren til det siste elementet (end()-funksjonen).
- 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.
#includeved 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
- 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. std :: sortere ( Vektor først, vektor sist ) ;
- 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. vektor. viske ut ( std :: unik ( Vektor først, vektor sist ) , Vector sist ) )
Lag 'studenter'-vektoren med 10 elementer og returner vektoren ved å fjerne duplikatene.
#includeved 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:
- Den første parameteren tar vektoren som kildeiteratoren som er spesifisert med start()-funksjonen.
- Den andre parameteren tar vektoren som kildeiteratoren som er spesifisert ved bruk av end()-funksjonen.
- 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.
#includeved 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:
- Iterer vektoren ved å bruke 'for'-løkken.
- I hver iterasjon, sjekk om elementet er tomt (“”) eller ikke ved å bruke “==”-operatoren med at()-medlemsfunksjonen.
- Ved å bruke std::erase()-funksjonen, fjern de tomme strengene etter å ha sjekket forrige tilstand.
- 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. på ( 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 .
- Skyv noen elementer inn i den ved å bruke push_back-funksjonen etter initialisering av vektoren.
- Bruk open()-funksjonen fra 'fstream'-biblioteket med modusen som ut.
- 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.
- 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.
- Lag en ' ifstream' variabel som brukes til å lese informasjonen fra tekstfilen der vi lager vektoren fra filen.
- Lag en tom vektor for å lagre filinnholdet og bruk en tom strengvariabel som flagg for å sjekke slutten av filen.
- 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.
- 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.