I C++ er Vector en endimensionel datastruktur, som dynamisk øger sig selv baseret på kravet. Dataorganisering (indsættelse/ændring/sletning) kan udføres effektivt i denne datastruktur. Dens applikationer omfatter følgende:
- Repræsenterer de matematiske vektorer i videnskabelige og tekniske applikationer
- Køer, stakke kan implementeres ved hjælp af denne datastruktur osv.
De fleste af de almindelige CRUD-operationer og -funktioner relateret til denne datastruktur diskuteres scenariemæssigt i detaljer med syntaks og kodestykker.
Emne for indhold:
- Indsæt et element i en vektor
- Indsæt flere elementer i en vektor
- Få adgang til elementerne fra en vektor
- Opdater elementet i en vektor
- Fjern et bestemt element fra en vektor
- Fjern alle elementer fra en vektor
- Sammenslutning af vektorer
- Skæring af vektorer
- Tjek, om vektoren er tom eller ej
- Gennemgå en vektor ved hjælp af Const_Iterator
- Traversere en vektor ved hjælp af Reverse_Iterator
- Skub elementerne ind i vektoren
- Pop elementerne fra vektoren
- Skift vektorerne
- Hent det første element fra vektoren
- Hent det sidste element fra vektoren
- Tildel nye værdier til en vektor
- Udvid vektoren med Emplace()
- Udvid vektoren med Emplace_Back()
- Maksimal element af en vektor
- Minimumselement af en vektor
- Summen af elementer i en vektor
- Element-vis multiplikation af to vektorer
- Punktprodukt af to vektorer
- Konverter et sæt til en vektor
- Fjern de duplikerede elementer
- Konverter en vektor til et sæt
- Fjern de tomme strenge
- Skriv en vektor til en tekstfil
- Opret en vektor fra en tekstfil
Indsæt et element i en vektor
Det std::vector::insert() funktion i C++ STL bruges til at indsætte elementerne på den angivne position.
Syntaks:
vektor. indsætte ( position, element ) ;Lad os bruge denne funktion og videregive den første position som en parameter, der specificerer den position, hvor elementet skal indsættes, og give elementet som den anden parameter.
Start()-funktionen kan bruges her til at returnere en iterator, der peger på det første element i inputvektoren. Ved at tilføje positionen til denne funktion, indsættes elementet på denne position.
Lad os oprette 'student_names'-vektoren af typen streng og indsætte to strenge på den første og anden position, den ene efter den anden, ved hjælp af insert()-funktionen.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Initialisering af vektoren - elevnavne
vektor < snor > elev_navne ;
cout << 'Eksisterende vektor: \n ' ;
til ( auto jeg : elev_navne ) cout << jeg << endl ;
// Indsæt 'Sravan Kumar' ved den første position
elev_navne. indsætte ( elev_navne. begynde ( ) + 0 , 'Shravan Kumar' ) ;
// Indsæt 'Sravan Kumar' på den anden position
elev_navne. indsætte ( elev_navne. begynde ( ) + 1 , 'Lalitha' ) ;
cout << 'Endelig vektor: \n ' ;
til ( auto j : elev_navne ) cout << j << endl ;
}
Produktion:
Tidligere var vektoren 'student_names' tom. Efter indsættelse indeholder vektoren to elementer.
Indsæt flere elementer i en vektor
Vi bruger den samme funktion, som er std::vector::insert() i dette scenarie. Men vi skal sende de ekstra/forskellige parametre til den samme funktion for at indsætte flere elementer i en vektor.
Scenarie 1: Indsættelse af et enkelt element flere gange
I dette scenarie tilføjer vi det samme element flere gange.
Syntaks:
vektor. indsætte ( position, størrelse, element ) ;For at gøre dette skal vi overføre størrelsen som den anden parameter til insert()-funktionen. Det samlede antal parametre, der overføres til denne funktion, er tre.
Her:
- Positionsparameteren angiver elementpositionen, der skal indsættes. Hvis størrelsen er større end 1, vil startpositionsindekset være positionen.
- Størrelsesparameteren angiver antallet af gange et element skal indsættes.
- Elementparameteren tager det element, der skal indsættes i en vektor.
Overvej 'student_names' vektoren med to strenge. Indsæt 'Lavanya'-strengene fem gange i den anden position.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Initialisering af vektoren - elevnavne
vektor < snor > elev_navne { 'Shravan Kumar' , 'Lalitha' } ;
cout << 'Eksisterende vektor: \n ' ;
til ( auto jeg : elev_navne ) cout << jeg << endl ;
// Indsæt 'Lavanya' på den anden position 5 gange
elev_navne. indsætte ( elev_navne. begynde ( ) + 1 , 5 , 'Lavanya' ) ;
cout << ' \n Endelig vektor: \n ' ;
til ( auto j : elev_navne ) cout << j << endl ;
}
Produktion:
I den eksisterende vektor er 'Sravan Kumar' i den første position og 'Lalitha' i den anden position. Efter at have indsat 'Lavanya' fem gange (fra anden position til sjette position), flyttede 'Lalitha' til den syvende position (sidste).
Scenarie 2: Indsættelse af flere elementer
I dette scenarie tilføjer vi de forskellige elementer ad gangen fra en anden vektor. Vi bruger også den samme funktion her, men syntaksen og parametrene ændres.
Syntaks:
vektor. indsætte ( position, første_iterator, anden_iterator ) ;For at gøre dette skal vi overføre størrelsen som den anden parameter til insert()-funktionen. Det samlede antal parametre, der overføres til denne funktion, er tre.
Her:
- Positionsparameteren angiver elementpositionen, der skal indsættes.
- 'first_iterator' angiver startpositionen, hvorfra elementerne skal indsættes (grundlæggende, ved hjælp af funktionen begin() returneres en iterator, som peger på det første element, der er til stede i containeren).
- 'Second_iterator' angiver slutpositionen, indtil elementerne skal indsættes (grundlæggende, ved hjælp af end()-funktionen returneres en iterator, som peger ved siden af det sidste punkt, der er til stede i containeren).
Opret to vektorer, 'marks1' og 'marks2', af heltalstypen. Indsæt alle de elementer, der er til stede i 'marks2' vektoren i den første position af 'marks1' vektoren.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Initialisering af vektoren - marks1
vektor < int > mærker 1 { 100 , 89 , 90 , 78 , 98 } ;
cout << 'Første vektor: \n ' ;
til ( auto jeg : mærker 1 ) cout << jeg << endl ;
// Initialisering af vektoren - marks2
vektor < int > karakterer 2 { 56 , Fire, fem , 65 } ;
cout << 'Anden vektor: \n ' ;
til ( auto j : karakterer 2 ) cout << j << endl ;
mærker 1. indsætte ( begynde ( mærker 1 ) , begynde ( karakterer 2 ) , ende ( karakterer 2 ) ) ;
// Endelig vektor
cout << 'Første-finale vektor: \n ' ;
til ( auto x : mærker 1 )
cout << x << ' ' ;
}
Produktion:
Den første vektor (mærke1) indeholder fem elementer, og den anden vektor (mærke2) indeholder tre elementer. Vi sendte parametrene start (marks1), begin(marks2), end(marks2) til 'insert'-funktionen, således at alle de elementer, der er til stede i den anden vektor, itereres og indsættes i den første vektor i begyndelsen. Så den første vektor indeholder otte elementer.
Få adgang til elementerne fra en vektor
1. Brug af []-operatøren
I nogle scenarier kan du have et krav om kun at returnere de specifikke elementer fra vektoren. Det er ikke nødvendigt at returnere alle elementer. Så for kun at returnere de specifikke elementer baseret på indekset, bruges indeksoperatoren og at() funktionerne.
Syntaks:
vektor [ indeks_position ]I C++ starter indeksering fra 0 for enhver datastruktur. Hvis elementet ikke eksisterer, returnerer det tomt (ingen fejl eller advarsel vises).
Overvej 'produkter'-vektoren med fem elementer. Få adgang til alle elementerne én efter én ved hjælp af indekspositionen.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - produkter med 5 strenge
vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;
//Adgang til elementer fra produkterne
cout << 'Første element: ' << Produkter [ 0 ] << endl ;
cout << 'Andet element: ' << Produkter [ 1 ] << endl ;
cout << 'Tredje element: ' << Produkter [ 2 ] << endl ;
cout << 'Fjerde element: ' << Produkter [ 3 ] << endl ;
cout << 'Femte element: ' << Produkter [ 4 ] << endl ;
// Prøv at få adgang til 9. element
cout << 'Niende element: ' << Produkter [ 8 ] << endl ;
}
Produktion:
Der er intet element til stede ved indeks 8. Så tomme returneres.
2. Brug af At()-funktionen
At() er en medlemsfunktion, der ligner den tidligere anvendelse, men den returnerer undtagelsen 'std::out_of_range', når indekset uden for rækkevidde leveres til det.
Syntaks:
vektor. på ( indeks_position )Vi skal overføre indekspositionen til denne funktion.
Overvej 'produkter'-vektoren med fem elementer. Få adgang til alle elementerne én efter én ved hjælp af indekspositionen, og prøv at få adgang til det element, der er til stede på den 9. position.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - produkter med 5 strenge
vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;
//Adgang til elementer fra produkterne
cout << 'Første element: ' << Produkter. på ( 0 ) << endl ;
cout << 'Andet 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 ;
//Få adgang til elementerne, der ikke er i vektoren
cout << 'Niende element: ' << Produkter. på ( 8 ) << endl ;
}
Produktion:
Der opstår en fejl ved adgang til det 9. element:
terminate kaldet efter at have kastet en instans af 'std::out_of_range'hvad ( ) : vektor :: _M_range_check : __n ( som er 8 ) >= det her - > størrelse ( ) ( som er 5 )
Opdater et element i en vektor
1. Brug af []-operatøren
Ved at bruge indekspositionen kan vi opdatere elementet i vektoren. Operatoren [] tager indekspositionen for det element, der skal opdateres. Det nye element vil blive tildelt denne operatør.
Syntaks:
Vektor [ indeks_position ] = ElementOvervej 'student_marks' vektoren med fem værdier. Opdater elementerne i indeks 1 og 3.
#include#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - elev_mærker
vektor < int > elev_karakterer { 98 , 78 , 90 , 67 , 89 } ;
cout << 'Eksisterende mærker: ' << endl ;
til ( int itr : elev_karakterer )
cout << itr << endl ;
// Opdater element ved index-3 med 100
elev_karakterer [ 3 ] = 100 ;
// Opdater element ved indeks-1 med 60
elev_karakterer [ 1 ] = 60 ;
cout << 'Slutkarakterer:' << endl ;
til ( int itr : elev_karakterer )
cout << itr << endl ;
}
Produktion:
Vi kan se, at den endelige vektor indeholder opdateringselementerne ved indeks 1 og 3.
2. Brug af At()-funktionen
I lighed med indeksoperatoren er at() dybest set en medlemsfunktion, som opdaterer værdien baseret på indekset i en iterator. Hvis indekset, der er angivet i denne funktion, ikke eksisterer, udløses undtagelsen 'std::out_of_range'.
vektor. på ( indeks_position ) = ElementOvervej 'produkter'-vektoren med fem elementer. Opdater alle de elementer, der er til stede i vektoren, med andre elementer.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - produkter med 5 strenge
vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;
cout << 'Eksisterende produkter: ' << endl ;
til ( streng itr : Produkter )
cout << itr << endl ;
//Opdatering af alle strengene
Produkter. på ( 0 ) = 'Kage' ;
Produkter. på ( 1 ) = 'Chokolade' ;
Produkter. på ( 2 ) = 'Frugter' ;
Produkter. på ( 3 ) = 'Løg' ;
Produkter. på ( 4 ) = 'Læskedrikke' ;
cout << ' \n Slutprodukter: ' << endl ;
til ( streng itr : Produkter )
cout << itr << endl ;
}
Produktion:
Fjern et bestemt element fra en vektor
I C++ er std::vektor::slet() funktion bruges til at fjerne et bestemt element/område af elementer fra en vektor. Elementerne fjernes baseret på iteratorpositionerne.
Syntaks:
vektor. slette ( iterator position )Lad os se syntaksen for at fjerne det specifikke element fra en vektor. Vi kan bruge funktionerne start() eller end() til at få positionen af det element, der er til stede i vektoren, der skal fjernes.
Overvej 'produkter'-vektoren med fem elementer.
- Fjern det tredje element ved at angive start() iteratoren. Begin() peger på det første element i vektoren. Hvis vi tilføjer to til denne funktion, peger det på det tredje element.
- Fjern det sidste element ved at angive end() iteratoren. End() peger på det sidste element i vektoren.
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - produkter med 5 strenge
vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;
cout << 'Eksisterende produkter: ' << endl ;
til ( streng itr : Produkter )
cout << itr << endl ;
// Fjern 3. element
Produkter. slette ( Produkter. begynde ( ) + 2 ) ;
cout << ' \n Efter fjernelse af 3. element: \n ' ;
til ( streng itr : Produkter )
cout << itr << endl ;
// Fjern sidste element
Produkter. slette ( Produkter. ende ( ) ) ;
cout << ' \n Efter at have fjernet det sidste element: \n ' ;
til ( streng itr : Produkter )
cout << itr << endl ;
}
Produktion:
Nu er der kun tre elementer ('sæbe', 'shampoo', 'frugter'), der findes i 'produkter'-vektoren.
Fjern alle elementer fra en vektor
Scenarie 1: Fjern en række elementer fra en vektor
Lad os bruge std::vector::erase()-funktionen til at fjerne flere elementer i et område.
Syntaks:
vektor. slette ( iterator først, iterator sidst )De to iteratorer (begin() peger på det første element og end() peger på de sidste elementfunktioner) bruges til at angive området.
Overvej 'produkter'-vektoren med fem elementer og fjern alle elementerne fra den anden position. For at opnå dette er den første iterator start (produkter)+1, der peger på det andet element, og den anden iterator er slut (produkter).
#includeved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - produkter med 5 strenge
vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;
cout << 'Eksisterende produkter: ' << endl ;
til ( streng itr : Produkter )
cout << itr << endl ;
// Fjern alle elementer fra den anden position
Produkter. slette ( begynde ( Produkter ) + 1 ,ende ( Produkter ) ) ;
cout << ' \n Slutprodukter: \n ' ;
til ( streng itr : Produkter )
cout << itr << endl ;
}
Produktion:
Nu er der kun ét element ('sæbe'), der er til stede i 'produkter'-vektoren.
Scenarie 2: Fjern alle elementer fra vektoren
Lad os bruge std::vector::clear() funktion til at fjerne alle elementer fra vektoren.
Syntaks:
vektor. klar ( )Der sendes ingen parametre til denne funktion.
Overvej den samme vektor, som blev brugt i det første scenarie, og fjern alle elementerne ved hjælp af clear()-funktionen.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - produkter med 5 strenge
vektor < snor > Produkter { 'sæbe' , 'shampoo' , 'olie' , 'frugter' , 'grøntsager' } ;
cout << 'Eksisterende produkter: ' << endl ;
til ( streng itr : Produkter )
cout << itr << endl ;
// Fjern alle elementer fra produkterne
Produkter. klar ( ) ;
cout << ' \n Slutprodukter: \n ' ;
til ( streng itr : Produkter )
cout << itr << endl ;
}
Produktion:
Vi kan se, at der ikke er nogen elementer i 'produkter'-vektoren.
Sammenslutning af vektorer
Det er muligt at udføre UNION-operationen på vektorer ved hjælp af std::set_union()-funktionen. Union returnerer de unikke elementer fra vektorerne ved at ignorere de duplikerede elementer. Vi skal overføre begge iteratorer til denne funktion. Sammen med dette skal der passeres en output-iterator, som gemmer resultatet, der returneres af begge iteratorer.
Syntaks:
sæt_union ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;Her:
- 'First1' peger på det første element i den første iterator (vektor).
- 'Sidste1' peger på det sidste element i den første iterator (vektor).
- 'First2' peger på det første element i den anden iterator (vektor).
- 'last2' peger på det sidste element i den anden iterator (vektor).
Opret to vektorer - 'emner1' og 'emner2' - af typen heltal.
- Sorter de to vektorer ved at bruge sort()-funktionen ved at sende iteratorerne.
- Opret en outputvektor (iterator).
- Find foreningen af disse to vektorer ved hjælp af std::set_union()-funktionen. Brug begin() som den første iterator og end() som den sidste iterator.
- Gentag outputvektoren for at vise de elementer, der returneres af funktionen.
#include
#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - mærker1
vektor < int > mærker 1 = { 100 , 90 , 80 , 70 , 60 } ;
// Opret vektor - marks2
vektor < int > karakterer 2 = { 80 , 90 , 60 , 70 , 100 } ;
// Sorter begge vektorerne
sortere ( mærker 1. begynde ( ) , mærker 1. ende ( ) ) ;
sortere ( karakterer 2. begynde ( ) , karakterer 2. ende ( ) ) ;
vektor < int > outputVektor ( mærker 1. størrelse ( ) + karakterer 2. størrelse ( ) ) ;
vektor < int > :: iterator jeg, s ;
jeg = sæt_union ( mærker 1. begynde ( ) , mærker 1. ende ( ) ,
karakterer 2. begynde ( ) ,mærker2. ende ( ) ,
outputVektor. begynde ( ) ) ;
cout << ' \n karakterer1 U karakterer2: \n ' ;
til ( s = outputVektor. begynde ( ) ; s ! = jeg ; ++ s )
cout << * s << ' ' << ' \n ' ;
}
Produktion:
Der er kun fem unikke elementer i begge vektorer (emne1 og subjekter2).
Skæring af vektorer
At finde skæringspunktet mellem to vektorer kan være muligt ved hjælp af std::set_intersection()-funktionen. Intersection returnerer de elementer, der er til stede i begge vektorer.
Syntaks:
sæt_kryds ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;De parametre, der sendes til set_union()-funktionen, kan også overføres til denne set_intersection()-funktion.
Opret to vektorer - 'emner1' og 'emner2' - af typen heltal.
- Sorter de to vektorer ved at bruge sort()-funktionen ved at sende iteratorerne.
- Opret en outputvektor (iterator).
- Find skæringspunktet mellem disse to vektorer ved hjælp af std::set_intersection()-funktionen. Brug begin() som den første iterator og end() som den sidste iterator.
- Gentag outputvektoren for at vise de elementer, der returneres af funktionen.
#include
#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - mærker1
vektor < int > mærker 1 = { 100 , 10 , 80 , 40 , 60 } ;
// Opret vektor - marks2
vektor < int > karakterer 2 = { halvtreds , 90 , 60 , 10 , 100 } ;
// Sorter begge vektorerne
sortere ( mærker 1. begynde ( ) , mærker 1. ende ( ) ) ;
sortere ( karakterer 2. begynde ( ) , karakterer 2. ende ( ) ) ;
vektor < int > outputVektor ( mærker 1. størrelse ( ) + karakterer 2. størrelse ( ) ) ;
vektor < int > :: iterator jeg, s ;
jeg = sæt_kryds ( mærker 1. begynde ( ) , mærker 1. ende ( ) ,
karakterer 2. begynde ( ) ,mærker2. ende ( ) ,
outputVektor. begynde ( ) ) ;
cout << ' \n marks1 ∩ marks2: \n ' ;
til ( s = outputVektor. begynde ( ) ; s ! = jeg ; ++ s )
cout << * s << ' ' << ' \n ' ;
}
Produktion:
Der er kun tre elementer til stede i begge vektorer (emne1 og subjekter2).
Tjek, om vektoren er tom eller ej
Før du arbejder med vektorer, er det vigtigt at kontrollere, om vektoren er tom eller ej. Det er også en god praksis i softwareprojekter at kontrollere, om vektoren er tom eller ej, før du udfører operationerne som CRUD-operationer osv.
1. Brug af Std::vector::empty()
Denne funktion returnerer 1, hvis vektoren er tom (indeholder ikke noget element). Ellers returneres 0. Ingen parameter sendes til denne funktion.
2. Brug af Std::vektor::størrelse()
Funktionen std::vector::size() returnerer det heltal, der repræsenterer det samlede antal elementer, der er til stede i vektoren.
Opret to vektorer - 'college1' og 'college2'. 'College1' indeholder fem elementer, og 'college2' er tomt. Anvend begge funktioner på begge vektorer og kontroller output.
#include#include
#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - college1
vektor < snor > college 1 = { 'college-A' , 'college-B' , 'college-C' , 'college-D' , 'college-E' } ;
// Opret vektor - college2
vektor < snor > college 2 ;
// tomme()
cout << college 1. tom ( ) << endl ;
cout << college 2. tom ( ) << endl ;
// størrelse()
cout << college 1. størrelse ( ) << endl ;
cout << college 2. størrelse ( ) << endl ;
}
Produktion:
Funktionen empty() returnerer 0 for 'college1' og 1 for 'college2'. Funktionen size() returnerer fem for 'college1' og 0 for 'college2'.
Gennemgå en vektor ved hjælp af Const_Iterator
Når du arbejder på C++ containere som sæt, vektorer osv., er det muligt at iterere over alle de elementer, der er til stede i containeren uden at ændre dem. Det konst_iterator er en af de iteratorer, der opnår dette scenarie. cbegin() (peger på det første element i vektoren) og cend() (peger på det sidste element i vektoren) er de to funktioner, der leveres af hver container, som bruges til at returnere den konstante iterator til begyndelsen og slutningen af beholderen. Mens vi itererer vektoren, kan vi bruge disse to funktioner.
- Lad os oprette en vektor ved navn 'afdelinger' med fem strenge.
- Erklære en const_iterator – ctr af typen
. - Gentag over afdelingerne ved hjælp af den forrige iterator ved hjælp af 'for'-løkken og vis den.
#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - afdelinger
vektor < snor > afdelinger = { 'Salg' , 'Service' ,
'HR' , 'DET' , 'Andre' } ;
vektor < snor > :: konst_iterator ctr ;
// Iterér over afdelingerne ved hjælp af const_iterator - ctr.
til ( ctr = afdelinger. cbegynde ( ) ; ctr ! = afdelinger. nogle få ( ) ; ctr ++ ) {
cout << * ctr << endl ;
}
}
Produktion:
Gennemgå en vektor ved hjælp af Reverse_Iterator
Det omvendt_iterator er også en iterator, der ligner const_iterator, men den returnerer elementerne omvendt. rbegin() (peger på det sidste element i vektoren) og rend() (peger på det første element i vektoren) er de to funktioner, der leveres af hver container, som bruges til at returnere den konstante iterator til slutningen og begyndelsen af beholderen.
- Lad os oprette en vektor ved navn 'afdelinger' med fem strenge.
- Erklære en omvendt_iterator – rtr af typen
. - Gentag over afdelingerne ved hjælp af den forrige iterator ved hjælp af 'for'-løkken og vis den.
#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - afdelinger
vektor < snor > afdelinger = { 'Salg' , 'Service' ,
'HR' , 'DET' , 'Andre' } ;
vektor < snor > :: omvendt_iterator rtr ;
// Iterér over afdelingerne ved hjælp af reverse_iterator - rtr.
til ( rtr = afdelinger. begynde ( ) ; rtr ! = afdelinger. gør ( ) ; rtr ++ ) {
cout << * rtr << endl ;
}
}
Produktion:
Skub elementerne ind i vektoren
At skubbe eller tilføje elementerne i en vektor er en envejs-indsættelse, der kan udføres ved hjælp af vector::push_back() fungere.
Syntaks:
vektor. skub tilbage ( element )Det kræver et element at blive skubbet ind i vektoren som en parameter.
Lad os oprette en tom vektor ved navn 'afdelinger' med fem strenge og skubbe to strenge efter hinanden ved hjælp af push_back()-funktionen.
#include#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Initialiser vektor - afdelinger
vektor < snor > afdelinger ;
cout << 'Faktiske afdelinger:' << endl ;
til ( auto itr = afdelinger. begynde ( ) ; itr ! = afdelinger. ende ( ) ; ++ itr )
cout << * itr << endl ;
// Tryk på 'Salg'
afdelinger. skub tilbage ( 'Salg' ) ;
// Skubbe det'
afdelinger. skub tilbage ( 'DET' ) ;
cout << ' \n Afsluttende afdelinger:' << endl ;
til ( auto itr = afdelinger. begynde ( ) ; itr ! = afdelinger. ende ( ) ; ++ itr )
cout << * itr << endl ;
}
Produktion:
Først trykker vi på 'Salg'. Derefter skubbes 'IT' ind i vektoren. Nu indeholder 'afdelings'-vektoren to elementer.
Pop elementerne fra vektoren
Hvis du vil slette det sidste element, der er til stede i vektoren, skal du bruge vector::pop_back() funktion er den bedste tilgang. Det sletter det sidste element, der er til stede i vektoren.
Syntaks:
vektor. pop_back ( )Der kræves ingen parameter til denne funktion. Det viser den udefinerede adfærd, hvis vi forsøger at slette det sidste element fra en tom vektor.
Lad os oprette en tom vektor ved navn 'afdelinger' med fem strenge og slette det sidste element ved hjælp af den forrige funktion. Vis vektoren i begge tilfælde.
#include#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Initialiser vektor - afdelinger
vektor < snor > afdelinger = { 'Salg' , 'DET' , 'Service' , 'Markedsføring' , 'HR' } ;
cout << 'Faktiske afdelinger:' << endl ;
til ( auto itr = afdelinger. begynde ( ) ; itr ! = afdelinger. ende ( ) ; ++ itr )
cout << * itr << endl ;
// Slet det sidste element
afdelinger. pop_back ( ) ;
cout << ' \n Afsluttende afdelinger:' << endl ;
til ( auto itr = afdelinger. begynde ( ) ; itr ! = afdelinger. ende ( ) ; ++ itr )
cout << * itr << endl ;
}
Produktion:
'HR' er det sidste element, der er til stede i 'afdelings'-vektoren. Så den fjernes fra vektoren, og den endelige vektor indeholder 'Salg', 'IT', 'Service' og 'Marketing'.
Skift vektorerne
Det vektor::swap() funktion i C++ STL bruges til at bytte alle de elementer, der er til stede i to vektorer.
Syntaks:
første_vektor. bytte rundt ( anden_vektor )Den tager ikke højde for størrelsen af vektorerne, men vektorerne skal være af samme type (fejl opstår, hvis vektortyperne er forskellige).
Lad os skabe to vektorer - 'frugter' og 'grøntsager' - af strengtype med forskellige størrelser. Skift hver af dem og vis vektorerne i begge tilfælde.
#include#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Initialiser vektor - frugter
vektor < snor > frugter = { 'Æble' , 'Mango' } ;
cout << 'Faktiske frugter:' << endl ;
til ( auto itr = frugter. begynde ( ) ; itr ! = frugter. ende ( ) ; ++ itr )
cout << * itr << endl ;
// Initialiser vektor - grøntsager
vektor < snor > grøntsager = { 'Kartoffel' , 'Tomat' , 'Brinjal' } ;
cout << ' \n Faktiske grøntsager:' << endl ;
til ( auto itr = grøntsager. begynde ( ) ; itr ! = grøntsager. ende ( ) ; ++ itr )
cout << * itr << endl ;
// Skift elementerne i begge vektorer
frugter. bytte rundt ( grøntsager ) ;
cout << ' \n Frugt efter bytte:' << endl ;
til ( auto itr = frugter. begynde ( ) ; itr ! = frugter. ende ( ) ; ++ itr )
cout << * itr << endl ;
cout << ' \n Grøntsager efter bytte:' << endl ;
til ( auto itr = grøntsager. begynde ( ) ; itr ! = grøntsager. ende ( ) ; ++ itr )
cout << * itr << endl ;
}
Produktion:
Tidligere har 'frugt'-vektoren to elementer, og 'grøntsager'-vektoren har tre elementer. Efter ombytning indeholder 'frugt'-vektoren tre elementer og 'grøntsager'-vektoren indeholder to elementer.
Hent det første element fra vektoren
I nogle tilfælde er kravet kun at returnere det første element fra vektoren. Vector::front()-funktionen i C++ STL henter kun det første element fra vektoren.
Syntaks:
vektor. foran ( )Denne funktion tager ikke nogen parameter. Hvis vektoren er tom, vises en fejl.
Lad os skabe to vektorer - 'frugter' og 'grøntsager' - af strengtype og prøve at hente det første element separat fra de to vektorer.
#include#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - frugter med 2 elementer
vektor < snor > frugter = { 'Æble' , 'Mango' } ;
// Returner det første element
cout << frugter. foran ( ) << endl ;
// Initialiser vektor - grøntsager
vektor < snor > grøntsager ;
// Prøv at returnere det første element
cout << grøntsager. foran ( ) ;
}
Produktion:
'Æble' er det første element, der er til stede i 'frugt'-vektoren. Så den er returneret. Men der opstår en fejl, når vi forsøger at hente det første element fra 'grøntsager'-vektoren, da det er tomt.
Hent det sidste element fra vektoren
Vector::end()-funktionen i C++ STL henter kun det sidste element fra vektoren.
Syntaks:
vektor. tilbage ( )Denne funktion tager ikke nogen parameter. Hvis vektoren er tom, vises en fejl.
Lad os skabe to vektorer - 'frugter' og 'grøntsager' - af strengtype og forsøge at hente det sidste element adskilt fra de to vektorer.
#include#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - frugter med 2 elementer
vektor < snor > frugter = { 'Æble' , 'Mango' } ;
// Hent det sidste element
cout << frugter. tilbage ( ) << endl ;
// Initialiser vektor - grøntsager
vektor < snor > grøntsager ;
// Prøv at hente det sidste element
cout << grøntsager. tilbage ( ) ;
}
Produktion:
'Mango' er det sidste element, der er til stede i 'frugt'-vektoren. Så den er returneret. Men der opstår en fejl, når vi forsøger at hente det sidste element fra vektoren 'grøntsager', da det er tomt.
Tildel nye værdier til en vektor
I nogle scenarier, hvis du vil opdatere alle værdierne med den nye værdi eller oprette en vektor med de samme værdier, er brug af funktionen vector::assign() den bedste fremgangsmåde. Ved at bruge denne funktion kan vi:
- Opret vektoren med alle lignende elementer
- Rediger den eksisterende vektor med det samme element
Syntaks:
vektor. tildele ( størrelse, værdi )Der kræves to parametre til denne funktion.
Her:
- Størrelsen angiver antallet af elementer, der skal tildeles.
- Værdien angiver det element, der skal tildeles.
Lad os skabe en vektor ved navn 'marks1' med fem værdier og opdatere denne vektor med fire elementer, således at alle elementerne i den opdaterede vektor er lig med 20.
#include#include
#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - mærker1
vektor < int > mærker 1 = { 100 , 90 , 80 , 70 , 60 } ;
cout << 'Faktisk vektor:' << endl ;
til ( int jeg = 0 ; jeg < mærker 1. størrelse ( ) ; jeg ++ )
cout << mærker 1 [ jeg ] << endl ;
mærker 1. tildele ( 4 , tyve ) ;
cout << ' \n Opdateret vektor:' << endl ;
til ( int jeg = 0 ; jeg < mærker 1. størrelse ( ) ; jeg ++ )
cout << mærker 1 [ jeg ] << endl ;
}
Produktion:
Tidligere rummer vektoren fem forskellige elementer. Nu indeholder den kun fire elementer, og alle er lig med 20.
Udvid vektoren med Emplace()
Vi ved allerede, at nye elementer er dynamisk indsat på enhver position i en vektor. Det er muligt at bruge vektor::emplace()-funktionen. Lad os hurtigt se på syntaksen og parametrene, der accepteres af denne funktion.
Syntaks:
vektor. Beliggenhed ( const_iterator position, element )To obligatoriske parametre overføres til denne funktion.
Her:
- Den første parameter tager positionen, så vi kan indsætte elementet på en hvilken som helst position. Vi kan få positionen ved at bruge start() eller end() iteratorfunktionen.
- Den anden parameter er det element, der skal indsættes i vektoren.
Overvej 'kemikalier' vektoren med to elementer.
- Indsæt 'Mangan' i den første position - start (kemikalier)
- Indsæt 'Kobber' i den sidste position - ende (kemikalier)
- Indsæt 'Svovl' i den tredje position - start(kemikalier)+2
#include
#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - kemikalier
vektor < snor > kemikalier = { 'Ilt' , 'CO' } ;
cout << 'Faktiske kemikalier:' << endl ;
til ( int jeg = 0 ; jeg < kemikalier. størrelse ( ) ; jeg ++ )
cout << kemikalier [ jeg ] << endl ;
// Indsæt element på den første position
kemikalier. Beliggenhed ( begynde ( kemikalier ) , 'Mangan' ) ;
// Indsæt element på den sidste position
kemikalier. Beliggenhed ( ende ( kemikalier ) , 'Kobber' ) ;
// Indsæt element på den tredje position
kemikalier. Beliggenhed ( begynde ( kemikalier ) + 2 , 'Svovl' ) ;
cout << ' \n Endelige kemikalier:' << endl ;
til ( int jeg = 0 ; jeg < kemikalier. størrelse ( ) ; jeg ++ )
cout << kemikalier [ jeg ] << endl ;
}
Produktion:
Nu indeholder den endelige vektor fem elementer (angivet i det følgende skærmbillede).
Udvid vektoren med Emplace_Back()
Et element kan tilføjes (tilføje i slutningen af vektoren), hvilket kan gøres ved hjælp af vector::emplace_back() fungere.
Syntaks:
vektor. emplace_back ( element )Det er obligatorisk at videregive elementet, der skal tilføjes til vektoren, som en parameter.
Lad os tilføje to elementer efter hinanden ved hjælp af emplace_back()-funktionen.
#include#include
#inkluder
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - kemikalier
vektor < snor > kemikalier = { 'Ilt' , 'CO' } ;
cout << 'Faktiske kemikalier:' << endl ;
til ( int jeg = 0 ; jeg < kemikalier. størrelse ( ) ; jeg ++ )
cout << kemikalier [ jeg ] << endl ;
// Indsæt mangan i slutningen af vektoren
kemikalier. emplace_back ( 'Mangan' ) ;
// Indsæt mangan i slutningen af vektoren
kemikalier. emplace_back ( 'Kobber' ) ;
cout << ' \n Endelige kemikalier:' << endl ;
til ( int jeg = 0 ; jeg < kemikalier. størrelse ( ) ; jeg ++ )
cout << kemikalier [ jeg ] << endl ;
}
Produktion:
Nu indeholder den endelige vektor fire elementer efter tilføjelse af 'Mangan' og 'Kobber'.
Maksimal element af en vektor
- Lav en vektor med nogle elementer.
- For at finde det maksimale element, der er til stede i vektoren, skal du bruge funktionen *max_element() som accepterer to iteratorer som argumenter. Disse to parametre fungerer som området, og det maksimale element returneres inden for det angivne interval. Startpositionen er start() og den sidste position er end().
Lad os overveje en vektor ved navn 'item_costs', der har fem heltalstypeværdier og returnerer det maksimale element.
#inkluder#include
#include
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - item_costs
vektor < int > vare_omkostninger = { 8900 , 5677 , 200 , 1000 , 2300 } ;
cout << 'Pris på varer: \n ' ;
til ( int jeg = 0 ; jeg < vare_omkostninger. størrelse ( ) ; jeg ++ )
cout << vare_omkostninger [ jeg ] << endl ;
// Returner det maksimale element fra ovenstående vektor - item_costs
cout << ' \n Maksimal pris: ' << * max_element ( begynde ( vare_omkostninger ) ,ende ( vare_omkostninger ) ) ;
}
Produktion:
Her er 8900 det maksimale element blandt alle de elementer, der er til stede i vektoren 'vare_omkostninger'.
Minimumselement af en vektor
- Lav en vektor med nogle elementer.
- For at finde det minimumselement, der er til stede i vektoren, skal du bruge funktionen *min_element() som accepterer to iteratorer som argumenter. Disse to parametre fungerer som området, og minimumselementet (mindre end alle de andre elementer) returneres inden for det angivne interval. Startpositionen er start() og den sidste position er end().
Brug den samme vektor, som er oprettet, til at finde det maksimale element og find minimumselementet ved hjælp af *min_element()-funktionen.
#inkluder#include
#include
ved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - item_costs
vektor < int > vare_omkostninger = { 8900 , 5677 , 200 , 1000 , 2300 } ;
cout << 'Pris på varer: \n ' ;
til ( int jeg = 0 ; jeg < vare_omkostninger. størrelse ( ) ; jeg ++ )
cout << vare_omkostninger [ jeg ] << endl ;
// Returner minimumselementet fra ovenstående vektor - item_costs
cout << ' \n Minimum pris: ' << * min_element ( begynde ( vare_omkostninger ) ,ende ( vare_omkostninger ) ) ;
}
Produktion:
Her er 200 minimumselementet blandt alle de elementer, der er til stede i vektoren 'item_costs'.
Summen af elementer i en vektor
For at returnere summen af alle de elementer, der er til stede i vektoren, skal den ophobe() funktion i C++ STL bruges. Den accepterer tre parametre. Den første parameter tager det første indeks, der repræsenterer startelementet i området (specificer start() iteratoren), og den anden parameter tager det sidste indeks, der repræsenterer slutelementet i området (specificer end() iteratoren) . Til sidst skal vi videregive den indledende værdi af summen (i vores tilfælde er det 0).
ophobe ( first_index, last_index, initial_val ) ;Opret en vektor med navnet 'item_costs' med fem heltalstypeelementer og beregn summen.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Opret vektor - item_costs
vektor < int > vare_omkostninger = { 8900 , 5677 , 200 , 1000 , 2300 } ;
cout << 'Pris på varer: \n ' ;
til ( int jeg = 0 ; jeg < vare_omkostninger. størrelse ( ) ; jeg ++ )
cout << vare_omkostninger [ jeg ] << endl ;
// Returner summen af alle elementer i ovenstående vektor - item_costs
cout << ' \n Udgifter i alt: ' << ophobe ( begynde ( vare_omkostninger ) ,ende ( vare_omkostninger ) , 0 ) ;
}
Produktion:
Summen af 8900, 5677, 200, 1000, 2300 er 18077.
Element-vis multiplikation af to vektorer
- Opret to vektorer med typen numerisk, og to vektorer skal være af samme størrelse (samlet antal elementer, der er til stede i den første vektor = det samlede antal elementer, der er til stede i den anden vektor).
- Erklær en ny vektor og brug for sløjfe , udfør multiplikationsoperationen på to elementer i hver iteration, og gem værdien i den oprettede vektor ved hjælp af push_back()-funktionen. til ( int itr = 0 ; jeg < first_vec. størrelse ( ) ; itr ++ )
- Vis de elementer, der er til stede i den resulterende vektor ved at iterere den.
{
resultat_vektor. skub tilbage ( first_vec [ itr ] * sec_thing [ itr ] ) ;
}
Opret en vektor med navnet 'item_costs' med fem heltalstypeelementer og beregn summen.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Opret to vektorer - produkter1 og produkter2 med 5 elementer hver
vektor < int > produkter 1 = { 10 , tyve , 30 , 40 , halvtreds } ;
vektor < int > produkter 2 = { halvtreds , 40 , 30 , 70 , 60 } ;
vektor < int > resultat_produkter ;
// Udfør elementvis multiplikation
til ( int jeg = 0 ; jeg < produkter 1. størrelse ( ) ; jeg ++ ) {
resultat_produkter. skub tilbage ( produkter 1 [ jeg ] * produkter 2 [ jeg ] ) ;
}
// Vis den resulterende vektor
cout << 'Vektor multiplikation: \n ' ;
til ( int res : resultat_produkter )
cout << res << endl ;
}
Produktion:
Gentagelse - 1 : 10 * halvtreds => 500Gentagelse - 2 : tyve * 40 => 800
Gentagelse - 3 : 30 * 30 => 900
Gentagelse - 4 : 40 * 70 => 2800
Gentagelse - 5 : halvtreds * 60 => 3000
Punktprodukt af to vektorer
I tilfælde af C++ vektorer er prikproduktet defineret som 'summen af produkterne af de tilsvarende indgange af de to sekvenser af vektorer'.
Syntaks:
indre_produkt ( Vector1 first, Vector1 last, Vector2 first, Initial_Val )Brug funktionen inner_product() til at returnere prikproduktet. Denne funktion tager fire nødvendige parametre.
Her:
- Den første parameter refererer til en iterator, der peger på begyndelsen af den første vektor (angiv ved hjælp af start()-funktionen).
- Den anden parameter refererer til en iterator, der peger på slutningen af den første vektor (angiv ved hjælp af end()-funktionen).
- Den tredje parameter refererer til en iterator, der peger på begyndelsen af den anden vektor (angiv ved hjælp af start()-funktionen).
- Startværdien skal sendes som den sidste parameter, som er et heltal for akkumuleringen af prikproduktet.
Brug det samme program, der er oprettet til multiplikation af to vektorer, og brug funktionen innsr_product() til at finde prikproduktet af de to vektorer.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Opret to vektorer - produkter1 og produkter2 med 5 elementer hver
vektor < int > produkter 1 = { 10 , tyve , 30 , 40 , halvtreds } ;
vektor < int > produkter 2 = { halvtreds , 40 , 30 , 70 , 60 } ;
// Vis den resulterende vektor
cout << 'Prik Produkt af produkter1 og produkter2: ' ;
cout << indre_produkt ( begynde ( produkter 1 ) ,ende ( produkter 1 ) ,begynde ( produkter 2 ) , 0 ) ;
}
Produktion:
( 10 * halvtreds ) + ( tyve * 40 ) + ( 30 * 30 ) + ( 40 * 70 ) + ( halvtreds * 60 )=> 500 + 800 + 900 + 2800 + 3000
=> 8000
Konverter et sæt til en vektor
Der er mange måder at konvertere et sæt til en vektor ved at overføre alle de elementer, der er rejst i et sæt til en vektor. Den bedste og enkleste måde er at bruge std::copy()-funktionen.
Syntaks
std :: kopi ( sourceIterator først, sourceIterator sidst, destinationIterator først )Brug std::copy() funktion, som indsætter elementerne fra en mængde i vektoren. Det kræver tre parametre.
Her:
- Den første parameter refererer til kildeiteratoren, der peger på det første element i iteratoren. Her er set den kildeiterator, der er angivet ved hjælp af start()-funktionen.
- På samme måde peger den anden parameter på det sidste element (end() funktion).
- Den tredje parameter refererer til destinations-iteratoren, der peger på det første element (specificeret ved hjælp af start()-funktionen) i iteratoren.
Lad os skabe et sæt med fem elever og kopiere alle elementerne til en vektor ved hjælp af den forrige funktion.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Lav et sæt - elever med 5 elementer
sæt < snor > studerende = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' } ;
cout << 'Sæt: \n ' ;
til ( streng i : studerende )
cout << jeg << endl ;
// Create Vector - student_vcof størrelse lig med størrelsen af sættet
vektor < snor > student_vc ( studerende. størrelse ( ) ) ;
// Indsæt elementer fra et sæt - elever i en vektor - student_vc.
kopi ( studerende. begynde ( ) , studerende. ende ( ) , student_vc. begynde ( ) ) ;
cout << ' \n Vektor: \n ' ;
til ( streng i : student_vc )
cout << jeg << endl ;
}
Produktion:
Nu kopieres alle de elementer, der er til stede i 'Students'-sættet til 'students_vc'-vektoren.
Fjern de duplikerede elementer
- Først skal vi sortere elementerne i vektoren, så alle de duplikerede elementer støder op til hinanden ved hjælp af std::sort() fungere. std :: sortere ( Vektor først, vektor sidst ) ;
- Brug std::unique()-funktionen, så duplikatelementerne bliver valgt. Brug samtidig erase()-funktionen til at fjerne de dubletter, der returneres af std::unique()-funktionen. Rækkefølgen af elementer kan ændre sig i den endelige vektor. vektor. slette ( std :: enestående ( Vektor først, vektor sidst ) , Vektor sidst ) )
Opret 'elever'-vektoren med 10 elementer og returner vektoren ved at fjerne dubletterne.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Lav en vektor - elever med 10 elementer
vektor < snor > studerende = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' ,
'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' } ;
cout << 'Studerende: \n ' ;
til ( streng i : studerende )
cout << jeg << ' ' ;
// Sorter alle elementerne i elevernes vektor.
sortere ( begynde ( studerende ) , ende ( studerende ) ) ;
// Brug funktionen unik() til at fjerne dubletterne med funktionen erase().
studerende. slette ( enestående ( begynde ( studerende ) , ende ( studerende ) ) , ende ( studerende ) ) ;
cout << ' \n \n Unikke studerende: \n ' ;
til ( auto itr = cbegynde ( studerende ) ; itr ! = nogle få ( studerende ) ; ++ itr ) {
cout << * itr << ' ' ;
}
}
Produktion:
Nu er alle elementerne unikke i vektoren.
Konverter en vektor til et sæt
Set tillader ikke duplikerede elementer. Hvis du skriver for at indsætte en vektor i et sæt med dubletter, vil de blive ignoreret. Vi bruger den samme std::copy() funktion, som blev brugt i det forrige scenarie, der konverterede sættet til en vektor.
I dette scenarie:
- Den første parameter tager vektoren som kildeiteratoren, der er angivet ved hjælp af start()-funktionen.
- Den anden parameter tager vektoren som kildeiteratoren, der er angivet ved hjælp af end()-funktionen.
- Bestå std::inserter()-funktionen, som bruges til at overskrive/kopiere elementerne automatisk på en bestemt position i sættet ved at angive sættet og iteratoren, der peger mod slutningen af sættet som parametre.
Lad os skabe en vektor med 10 heltal og kopiere elementerne til et sæt.
#includeved brug af navneområde std ;
vigtigste ( )
{
// Opret et sæt - mærker med 10 værdier
vektor < int > mærker = { 12 , 3. 4 , 56 , 78 , 65 , 78 , 90 , 90 , 78 , 3. 4 } ;
cout << 'Vektor: \n ' ;
til ( int jeg : mærker )
cout << jeg << ' ' ;
// Create Set - marks_set af størrelsen lig med størrelsen af vektoren
sæt < int > marks_set ;
// Indsæt elementer fra et sæt - elever i en vektor - student_vc.
kopi ( begynde ( mærker ) ,ende ( mærker ) , indsætter ( marks_set, end ( marks_set ) ) ) ;
cout << ' \n \n Sæt: \n ' ;
til ( int jeg : marks_set )
cout << jeg << ' ' ;
}
Produktion:
Den eksisterende vektor med navnet 'mærker' har 10 værdier. Efter at have kopieret det ind i 'marks_set'-sættet, indeholder det kun seks elementer, fordi de andre fire elementer er duplikeret.
Fjern de tomme strenge
Der er ingen brug af tomme strenge, der er til stede i en vektor. Det er en god praksis at fjerne de tomme strenge, der er til stede i vektoren. Lad os se, hvordan du fjerner de tomme strenge fra C++ vektoren:
- Iterér vektoren ved hjælp af 'for'-løkken.
- I hver iteration skal du kontrollere, om elementet er tomt ('') eller ikke ved at bruge '=='-operatoren med at()-medlemsfunktionen.
- Brug funktionen std::erase() til at fjerne de tomme strenge efter at have kontrolleret den tidligere betingelse.
- Gentag trin 2 og trin 3 indtil slutningen af vektoren.
Lad os skabe 'virksomheder' vektoren med 10 strenge. Blandt dem er fem tomme, og vi fjerner dem ved at implementere den tidligere tilgang.
#include#inkluder
ved brug af navneområde std ;
vigtigste ( ) {
vektor < snor > virksomheder { 'Virksomhed-A' , '' , 'Virksomhed-B' ,
'' , 'Virksomhed-C' , '' , 'Company-D' , '' , '' , '' } ;
// Gentag over virksomheder
// og fjern tomme elementer ved hjælp af erase()
til ( int itr = 1 ; itr < virksomheder. størrelse ( ) ; ++ itr ) {
hvis ( virksomheder. på ( itr ) == '' ) {
virksomheder. slette ( virksomheder. begynde ( ) + itr ) ;
-- itr ;
}
}
// Vis vektoren
til ( auto & jeg : virksomheder ) {
cout << jeg << endl ;
}
}
Produktion:
Nu holder 'virksomheder'-vektoren de ikke-tomme strenge.
Skriv en vektor til en tekstfil
Lad os diskutere, hvordan man skriver alle de elementer, der er til stede i en vektor til en fil ved hjælp af vektorindeksene ved hjælp af fstream .
- Skub nogle elementer ind i den ved hjælp af push_back-funktionen efter initialisering af vektoren.
- Brug funktionen open() fra 'fstream'-biblioteket med tilstanden som ude.
- Gennemse hvert element, der er til stede i vektoren, ved hjælp af indekserne i en 'for'-løkke, og skriv hvert element til den medfølgende fil.
- Luk til sidst filen.
Lad os implementere den tidligere tilgang ved at køre en C++ kode.
#inkluder#inkluder
#include
#include
ved brug af navneområde std ;
vigtigste ( )
{
// Opret en vektor - v_data
// og skub to elementer ind i den.
vektor < snor > v_data ;
v_data. skub tilbage ( 'Velkommen' ) ;
v_data. skub tilbage ( 'til LinuxHint' ) ;
strøm f ;
// Åbn filen
f. åben ( 'written_file.txt' ,ios_base :: ud ) ;
// Gentag hvert element i vektoren og skriv til filen én efter én.
til ( int jeg = 0 ; jeg < v_data. størrelse ( ) ; jeg ++ )
{
f << v_data [ jeg ] << endl ;
}
// Luk filen
f. tæt ( ) ;
}
Produktion:
'v_data' vektoren indeholder to elementer, og en fil oprettes i stien, hvor programmet udføres med de elementer, der er til stede i vektoren.
Opret en vektor fra en tekstfil
Vi lærte, hvordan man skriver de elementer, der er til stede i vektoren, til en tekstfil. Lad os her oprette en vektor fra indholdet, der er til stede i tekstfilen.
- Opret en ' ifstream' variabel, som bruges til at læse informationen fra tekstfilen, hvori vi opretter vektoren fra filen.
- Opret en tom vektor for at gemme filindholdet og brug en tom strengvariabel som et flag for at kontrollere slutningen af filen.
- Læs den næste linje fra filen, indtil den når slutningen (grundlæggende ved at bruge 'mens'-løkken). Brug push_back()-funktionen til at læse den næste linje og skubbe den ind i vektoren.
- Vis linjen, der er til stede i linjen, separat for at se de elementer, der er til stede i vektoren på konsollen.
Lad os implementere den tidligere tilgang ved at køre C++-koden. Lad os overveje filen 'data.txt' med følgende indhold. Her er navnet på vektoren 'v_data'.
#include
ved brug af navneområde std ;
vigtigste ( )
{
// Åbn tekstfilen - data
ifstream-fil ( 'data.txt' ) ;
// Opret vektor - v_data af typen - streng
vektor < snor > v_data ;
thong var ;
// Læs næste linje fra data.txt
// indtil den når slutningen.
mens ( fil >> var ) {
// Læs næste linje og tryk ind i v_data
v_data. skub tilbage ( var ) ;
}
// Vis linjen til stede i linjen separat.
kopi ( v_data. begynde ( ) , v_data. ende ( ) , ostream_iterator < snor > ( cout , ' \n ' ) ) ;
}
Produktion:
Vi kan se, at 'v_data' indeholder fem elementer, der kom fra filen.
Konklusion
I denne lange artikel undersøgte vi alle de mulige eksempler, der bruges i realtidsapplikationer relateret til vektorer i C++ programmeringssproget. Hvert eksempel er forklaret med syntaks, parametre og eksempel med output. Kommentarer tilføjes i hver kode for at få en klar forståelse af koden.