V C++ je Vector enodimenzionalna podatkovna struktura, ki se dinamično povečuje glede na zahtevo. Organizacijo podatkov (vstavljanje/spreminjanje/brisanje) je mogoče učinkovito izvesti v tej strukturi podatkov. Njegove aplikacije vključujejo naslednje:
- Predstavljanje matematičnih vektorjev v znanstvenih in inženirskih aplikacijah
- S to podatkovno strukturo je mogoče implementirati čakalne vrste, sklade itd.
Večina običajnih operacij in funkcij CRUD, povezanih s to podatkovno strukturo, je podrobno obravnavana glede na scenarij s sintakso in delčki kode.
Tema vsebine:
- Vstavite element v vektor
- Vstavite več elementov v vektor
- Dostop do elementov iz vektorja
- Posodobite element v vektorju
- Odstranite določen element iz vektorja
- Odstranite vse elemente iz vektorja
- Zveza vektorjev
- Presek vektorjev
- Preverite, ali je vektor prazen ali ne
- Prečkaj vektor z uporabo Const_Iterator
- Prečkaj vektor z uporabo Reverse_Iterator
- Potisnite elemente v vektor
- Izvlecite elemente iz vektorja
- Zamenjaj vektorje
- Pridobite prvi element iz vektorja
- Pridobi zadnji element iz vektorja
- Vektorju dodelite nove vrednosti
- Razširite vektor z uporabo Emplace()
- Razširite vektor z uporabo Emplace_Back()
- Največji element vektorja
- Najmanjši element vektorja
- Vsota elementov v vektorju
- Elementno množenje dveh vektorjev
- Pikčasti produkt dveh vektorjev
- Pretvori nabor v vektor
- Odstranite podvojene elemente
- Pretvori vektor v niz
- Odstranite prazne nize
- Zapišite vektor v besedilno datoteko
- Ustvarite vektor iz besedilne datoteke
Vstavite element v vektor
The std::vector::insert() funkcija v C++ STL se uporablja za vstavljanje elementov na določen položaj.
Sintaksa:
vektor. vstavi ( položaj, element ) ;Uporabimo to funkcijo in posredujmo prvi položaj kot parameter, ki določa položaj, kamor je treba vstaviti element, in zagotovimo element kot drugi parameter.
Tukaj lahko uporabite funkcijo begin(), da vrnete iterator, ki kaže na prvi element vhodnega vektorja. Z dodajanjem položaja tej funkciji se element vstavi na ta položaj.
Ustvarimo vektor »student_names« vrste niz in vstavimo dva niza na prvo in drugo mesto enega za drugim s funkcijo insert().
#includeuporabo imenski prostor std ;
glavni ( )
{
// Inicializacija vektorja - student_names
vektor < vrvica > imena_učencev ;
cout << 'Obstoječi vektor: \n ' ;
za ( avto jaz : imena_učencev ) cout << jaz << konec ;
// Vstavi 'Sravan Kumar' na prvo mesto
imena_učencev. vstavi ( imena_učencev. začeti ( ) + 0 , 'Shravan Kumar' ) ;
// Vstavi 'Sravan Kumar' na drugo mesto
imena_učencev. vstavi ( imena_učencev. začeti ( ) + 1 , 'Lalitha' ) ;
cout << 'Končni vektor: \n ' ;
za ( avto j : imena_učencev ) cout << j << konec ;
}
Izhod:
Prej je bil vektor »imena_študentov« prazen. Po vstavitvi ima vektor dva elementa.
Vstavite več elementov v vektor
V tem scenariju uporabljamo isto funkcijo, ki je std::vector::insert(). Vendar moramo posredovati dodatne/različne parametre isti funkciji, da v vektor vstavimo več elementov.
Scenarij 1: Večkratno vstavljanje posameznega elementa
V tem scenariju dodamo isti element večkrat.
Sintaksa:
vektor. vstavi ( položaj, velikost, element ) ;Če želite to narediti, moramo posredovati velikost kot drugi parameter funkciji insert(). Skupni parametri, ki se posredujejo tej funkciji, so trije.
Tukaj:
- Parameter položaja določa položaj elementa, ki bo vstavljen. Če je velikost večja od 1, bo indeks začetnega položaja položaj.
- Parameter velikosti določa, kolikokrat naj bo element vstavljen.
- Parameter element vzame element, ki ga je treba vstaviti v vektor.
Razmislite o vektorju »imena_učencev« z dvema nizoma. Petkrat vstavite strune 'Lavanya' na drugo mesto.
#includeuporabo imenski prostor std ;
glavni ( )
{
// Inicializacija vektorja - student_names
vektor < vrvica > imena_učencev { 'Shravan Kumar' , 'Lalitha' } ;
cout << 'Obstoječi vektor: \n ' ;
za ( avto jaz : imena_učencev ) cout << jaz << konec ;
// Vstavite 'Lavanya' na drugo mesto 5-krat
imena_učencev. vstavi ( imena_učencev. začeti ( ) + 1 , 5 , 'Lavanya' ) ;
cout << ' \n Končni vektor: \n ' ;
za ( avto j : imena_učencev ) cout << j << konec ;
}
Izhod:
V obstoječem vektorju je »Sravan Kumar« na prvem mestu, »Lalitha« pa na drugem. Po petkratni vstavitvi 'Lavanya' (z drugega mesta na šesto mesto) se je 'Lalitha' premaknila na sedmo mesto (zadnje).
Scenarij 2: Vstavljanje več elementov
V tem scenariju dodajamo različne elemente naenkrat iz drugega vektorja. Tudi tukaj uporabljamo isto funkcijo, vendar se bodo sintaksa in parametri spremenili.
Sintaksa:
vektor. vstavi ( položaj, prvi_iterator, drugi_iterator ) ;Če želite to narediti, moramo posredovati velikost kot drugi parameter funkciji insert(). Skupni parametri, ki se posredujejo tej funkciji, so trije.
Tukaj:
- Parameter položaja določa položaj elementa, ki bo vstavljen.
- 'First_iterator' določa začetni položaj, iz katerega naj bodo elementi vstavljeni (v bistvu se z uporabo funkcije begin() vrne iterator, ki kaže na prvi element, ki je prisoten v vsebniku).
- »Second_iterator« določa končni položaj, do katerega naj bodo vstavljeni elementi (v bistvu se z uporabo funkcije end() vrne iterator, ki kaže poleg zadnje točke, ki je prisotna v vsebniku).
Ustvarite dva vektorja, 'marks1' in 'marks2', celoštevilskega tipa. Vstavite vse elemente, ki so prisotni v vektorju 'marks2', na prvo mesto vektorja 'marks1'.
#includeuporabo imenski prostor std ;
glavni ( )
{
// Inicializacija vektorja - oznake1
vektor < int > oznake1 { 100 , 89 , 90 , 78 , 98 } ;
cout << 'Prvi vektor: \n ' ;
za ( avto jaz : oznake1 ) cout << jaz << konec ;
// Inicializacija vektorja - oznake2
vektor < int > oznake2 { 56 , Štiri, pet , 65 } ;
cout << 'Drugi vektor: \n ' ;
za ( avto j : oznake2 ) cout << j << konec ;
oznake1. vstavi ( začeti ( oznake1 ) , začeti ( oznake2 ) , konec ( oznake2 ) ) ;
// Končni vektor
cout << 'Prvi-končni vektor: \n ' ;
za ( avto x : oznake1 )
cout << x << ' ' ;
}
Izhod:
Prvi vektor (oznake1) vsebuje pet elementov, drugi vektor (oznake2) pa tri elemente. Parametre begin (marks1), begin (marks2), end (marks2) smo posredovali funkciji 'insert', tako da se vsi elementi, ki so prisotni v drugem vektorju, ponovijo in vstavijo v prvi vektor na začetku. Torej, prvi vektor vsebuje osem elementov.
Dostop do elementov iz vektorja
1. Uporaba operatorja [].
V nekaterih scenarijih boste morda morali vrniti samo določene elemente iz vektorja. Vračanje vseh elementov ni potrebno. Za vrnitev samo določenih elementov, ki temeljijo na indeksu, se uporabita operator indeksa in funkcije at().
Sintaksa:
vektor [ položaj_indeksa ]V C++ se indeksiranje začne od 0 za katero koli podatkovno strukturo. Če element ne obstaja, se vrne prazen (ni napake ali se prikaže opozorilo).
Razmislite o vektorju »izdelki« s petimi postavkami. Dostopajte do vseh elementov enega za drugim s položajem indeksa.
#includeuporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - izdelke s 5 nizi
vektor < vrvica > izdelkov { 'milo' , 'šampon' , 'olje' , 'sadje' , 'zelenjava' } ;
//Dostop do elementov iz izdelkov
cout << 'Prvi element:' << izdelkov [ 0 ] << konec ;
cout << 'Drugi element:' << izdelkov [ 1 ] << konec ;
cout << 'Tretji element:' << izdelkov [ 2 ] << konec ;
cout << 'Četrti element:' << izdelkov [ 3 ] << konec ;
cout << 'Peti element:' << izdelkov [ 4 ] << konec ;
// Poskusite dostopati do 9. elementa
cout << 'Deveti element:' << izdelkov [ 8 ] << konec ;
}
Izhod:
Pri indeksu 8 ni nobenega elementa. Vrnjeno je torej prazno.
2. Uporaba funkcije At().
At() je funkcija članica, ki je podobna prejšnjemu primeru uporabe, vendar vrne izjemo »std::out_of_range«, ko ji je posredovan indeks izven obsega.
Sintaksa:
vektor. pri ( položaj_indeksa )Tej funkciji moramo posredovati položaj indeksa.
Razmislite o vektorju »izdelki« s petimi postavkami. Dostopajte do vseh elementov enega za drugim s položajem indeksa in poskusite dostopati do elementa, ki je prisoten na 9. mestu.
#includeuporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - izdelke s 5 nizi
vektor < vrvica > izdelkov { 'milo' , 'šampon' , 'olje' , 'sadje' , 'zelenjava' } ;
//Dostop do elementov iz izdelkov
cout << 'Prvi element:' << izdelkov. pri ( 0 ) << konec ;
cout << 'Drugi element:' << izdelkov. pri ( 1 ) << konec ;
cout << 'Tretji element:' << izdelkov. pri ( 2 ) << konec ;
cout << 'Četrti element:' << izdelkov. pri ( 3 ) << konec ;
cout << 'Peti element:' << izdelkov. pri ( 4 ) << konec ;
//Dostopanje do elementov, ki niso v vektorju
cout << 'Deveti element:' << izdelkov. pri ( 8 ) << konec ;
}
Izhod:
Pri dostopu do 9. elementa pride do napake:
terminate poklican po vrzitvi primerka 'std::out_of_range'kaj ( ) : vektor :: _M_preverjanje_razpona : __n ( kateri je 8 ) >= to - > velikost ( ) ( kateri je 5 )
Posodobi element v vektorju
1. Uporaba operatorja [].
Z uporabo položaja indeksa lahko posodobimo element v vektorju. Operator [] zavzame položaj indeksa elementa, ki ga je treba posodobiti. Nov element bo dodeljen temu operaterju.
Sintaksa:
Vektor [ položaj_indeksa ] = ElementRazmislite o vektorju »student_marks« s petimi vrednostmi. Posodobite elemente pri indeksih 1 in 3.
#include#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - student_marks
vektor < int > študent_ocen { 98 , 78 , 90 , 67 , 89 } ;
cout << 'Obstoječe znamke: ' << konec ;
za ( int itr : študent_ocen )
cout << itr << konec ;
// Posodobi element pri indeksu-3 s 100
ocene študentov [ 3 ] = 100 ;
// Posodobi element pri indeksu-1 s 60
študent_ocen [ 1 ] = 60 ;
cout << 'Končne ocene:' << konec ;
za ( int itr : ocene študentov )
cout << itr << konec ;
}
Izhod:
Vidimo lahko, da končni vektor vsebuje posodobitvene elemente pri indeksih 1 in 3.
2. Uporaba funkcije At().
Podobno kot operator indeksa je at() v bistvu funkcija članica, ki posodablja vrednost na podlagi indeksa v iteratorju. Če indeks, ki je podan znotraj te funkcije, ne obstaja, se sproži izjema »std::out_of_range«.
vektor. pri ( položaj_indeksa ) = ElementRazmislite o vektorju »izdelki« s petimi postavkami. Posodobite vse elemente v vektorju z drugimi elementi.
#includeuporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - izdelke s 5 nizi
vektor < vrvica > izdelkov { 'milo' , 'šampon' , 'olje' , 'sadje' , 'zelenjava' } ;
cout << 'Obstoječi izdelki: ' << konec ;
za ( niz itr : izdelkov )
cout << itr << konec ;
//Posodobitev vseh nizov
izdelkov. pri ( 0 ) = 'torta' ;
izdelkov. pri ( 1 ) = 'čokolada' ;
izdelkov. pri ( 2 ) = 'Sadje' ;
izdelkov. pri ( 3 ) = 'čebula' ;
izdelkov. pri ( 4 ) = 'Gazirane pijače' ;
cout << ' \n Končni izdelki: ' << konec ;
za ( niz itr : izdelkov )
cout << itr << konec ;
}
Izhod:
Odstranite določen element iz vektorja
V C++ je std::vector::erase() funkcija se uporablja za odstranitev določenega elementa/razpona elementov iz vektorja. Elementi so odstranjeni glede na položaje iteratorja.
Sintaksa:
vektor. izbrisati ( položaj iteratorja )Oglejmo si sintakso za odstranitev določenega elementa iz vektorja. Uporabimo lahko funkcije begin() ali end(), da dobimo položaj elementa, ki je prisoten v vektorju, ki ga želimo odstraniti.
Razmislite o vektorju »izdelki« s petimi postavkami.
- Odstranite tretji element tako, da podate iterator begin(). Begin() kaže na prvi element v vektorju. Če tej funkciji dodamo dva, kaže na tretji element.
- Odstranite zadnji element tako, da podate iterator end(). End() kaže na zadnji element v vektorju.
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - izdelke s 5 nizi
vektor < vrvica > izdelkov { 'milo' , 'šampon' , 'olje' , 'sadje' , 'zelenjava' } ;
cout << 'Obstoječi izdelki: ' << konec ;
za ( niz itr : izdelkov )
cout << itr << konec ;
// Odstrani 3. element
izdelkov. izbrisati ( izdelkov. začeti ( ) + 2 ) ;
cout << ' \n Po odstranitvi 3. elementa: \n ' ;
za ( niz itr : izdelkov )
cout << itr << konec ;
// Odstrani zadnji element
izdelkov. izbrisati ( izdelkov. konec ( ) ) ;
cout << ' \n Po odstranitvi zadnjega elementa: \n ' ;
za ( niz itr : izdelkov )
cout << itr << konec ;
}
Izhod:
Zdaj obstajajo samo trije elementi (»milo«, »šampon«, »sadje«), ki obstajajo v vektorju »izdelki«.
Odstranite vse elemente iz vektorja
1. scenarij: Odstranite obseg elementov iz vektorja
Uporabimo funkcijo std::vector::erase(), da odstranimo več elementov v obsegu.
Sintaksa:
vektor. izbrisati ( iterator prvi, iterator zadnji )Dva iteratorja (begin() kaže na prvi element in end() kaže na funkcije zadnjega elementa) se uporabljata za določanje obsega.
Razmislite o vektorju 'izdelkov' s petimi elementi in odstranite vse elemente z drugega položaja. Da bi to dosegli, je prvi iterator begin (products)+1, ki kaže na drugi element, drugi iterator pa je end (products).
#includeuporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - izdelke s 5 nizi
vektor < vrvica > izdelkov { 'milo' , 'šampon' , 'olje' , 'sadje' , 'zelenjava' } ;
cout << 'Obstoječi izdelki: ' << konec ;
za ( niz itr : izdelkov )
cout << itr << konec ;
// Odstranite vse elemente z drugega položaja
izdelkov. izbrisati ( začeti ( izdelkov ) + 1 ,konec ( izdelkov ) ) ;
cout << ' \n Končni izdelki: \n ' ;
za ( niz itr : izdelkov )
cout << itr << konec ;
}
Izhod:
Zdaj je v vektorju »izdelkov« prisoten samo en element (»milo«).
2. scenarij: odstranite vse elemente iz vektorja
Uporabimo std::vector::clear() funkcijo za odstranitev vseh elementov iz vektorja.
Sintaksa:
vektor. jasno ( )Tej funkciji niso posredovani nobeni parametri.
Razmislite o istem vektorju, ki je bil uporabljen v prvem scenariju, in odstranite vse elemente s funkcijo clear().
#includeuporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - izdelke s 5 nizi
vektor < vrvica > izdelkov { 'milo' , 'šampon' , 'olje' , 'sadje' , 'zelenjava' } ;
cout << 'Obstoječi izdelki: ' << konec ;
za ( niz itr : izdelkov )
cout << itr << konec ;
// Odstranite vse elemente iz izdelkov
izdelkov. jasno ( ) ;
cout << ' \n Končni izdelki: \n ' ;
za ( niz itr : izdelkov )
cout << itr << konec ;
}
Izhod:
Vidimo lahko, da v vektorju 'proizvodi' ni elementov.
Zveza vektorjev
Na vektorjih je mogoče izvesti operacijo UNION s funkcijo std::set_union(). Union vrne edinstvene elemente iz vektorjev tako, da ignorira podvojene elemente. Tej funkciji moramo posredovati oba iteratorja. Poleg tega je treba posredovati izhodni iterator, ki shrani rezultat, ki ga vrneta oba iteratorja.
Sintaksa:
set_union ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;Tukaj:
- 'First1' kaže na prvi element prvega iteratorja (vektorja).
- »Last1« kaže na zadnji element prvega iteratorja (vektorja).
- 'First2' kaže na prvi element drugega iteratorja (vektorja).
- »Last2« kaže na zadnji element drugega iteratorja (vektorja).
Ustvarite dva vektorja – »subjects1« in »subjects2« – tipa integer.
- Razvrstite oba vektorja s funkcijo sort() s posredovanjem iteratorjev.
- Ustvarite izhodni vektor (iterator).
- Poiščite unijo teh dveh vektorjev s funkcijo std::set_union(). Uporabite begin() kot prvi iterator in end() kot zadnji iterator.
- Ponovite izhodni vektor za prikaz elementov, ki jih vrne funkcija.
#include
#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - oznake1
vektor < int > oznake1 = { 100 , 90 , 80 , 70 , 60 } ;
// Ustvari vektor - oznake2
vektor < int > oznake2 = { 80 , 90 , 60 , 70 , 100 } ;
// Razvrsti oba vektorja
vrsta ( oznake1. začeti ( ) , ocene1. konec ( ) ) ;
vrsta ( oznake2. začeti ( ) , ocene2. konec ( ) ) ;
vektor < int > outputVector ( oznake1. velikost ( ) + oznake2. velikost ( ) ) ;
vektor < int > :: iterator jaz, s ;
jaz = set_union ( oznake1. začeti ( ) , ocene1. konec ( ) ,
oznake2. začeti ( ) ,oznake2. konec ( ) ,
outputVector. začeti ( ) ) ;
cout << ' \n oznake 1 U oznake 2: \n ' ;
za ( s = outputVector. začeti ( ) ; s ! = jaz ; ++ s )
cout << * s << ' ' << ' \n ' ;
}
Izhod:
V obeh vektorjih (subjekt1 in subjekt2) je le pet edinstvenih elementov.
Presek vektorjev
Iskanje presečišča dveh vektorjev je mogoče s funkcijo std::set_intersection(). Intersection vrne elemente, ki so prisotni v obeh vektorjih.
Sintaksa:
set_presečišče ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;Parametri, ki so posredovani funkciji set_union(), se lahko posredujejo tudi tej funkciji set_intersection().
Ustvarite dva vektorja – »subjects1« in »subjects2« – tipa integer.
- Razvrstite oba vektorja s funkcijo sort() s posredovanjem iteratorjev.
- Ustvarite izhodni vektor (iterator).
- Poiščite presečišče teh dveh vektorjev s funkcijo std::set_intersection(). Uporabite begin() kot prvi iterator in end() kot zadnji iterator.
- Ponovite izhodni vektor za prikaz elementov, ki jih vrne funkcija.
#include
#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - oznake1
vektor < int > oznake1 = { 100 , 10 , 80 , 40 , 60 } ;
// Ustvari vektor - oznake2
vektor < int > oznake2 = { petdeset , 90 , 60 , 10 , 100 } ;
// Razvrsti oba vektorja
vrsta ( oznake1. začeti ( ) , ocene1. konec ( ) ) ;
vrsta ( oznake2. začeti ( ) , ocene2. konec ( ) ) ;
vektor < int > outputVector ( oznake1. velikost ( ) + oznake2. velikost ( ) ) ;
vektor < int > :: iterator jaz, s ;
jaz = set_presečišče ( oznake1. začeti ( ) , ocene1. konec ( ) ,
oznake2. začeti ( ) ,oznake2. konec ( ) ,
outputVector. začeti ( ) ) ;
cout << ' \n ocene1 ∩ ocene2: \n ' ;
za ( s = outputVector. začeti ( ) ; s ! = jaz ; ++ s )
cout << * s << ' ' << ' \n ' ;
}
Izhod:
V obeh vektorjih (subjekt1 in subjekt2) so prisotni samo trije elementi.
Preverite, ali je vektor prazen ali ne
Pred delom na vektorjih je pomembno preveriti, ali je vektor prazen ali ne. Prav tako je dobra praksa pri projektih programske opreme, da preverite, ali je vektor prazen ali ne, preden izvedete operacije, kot so operacije CRUD itd.
1. Uporaba Std::vector::empty()
Ta funkcija vrne 1, če je vektor prazen (ne vsebuje nobenega elementa). V nasprotnem primeru se vrne 0. Tej funkciji ni posredovan noben parameter.
2. Uporaba Std::vector::size()
Funkcija std::vector::size() vrne celo število, ki predstavlja skupno število elementov, ki so prisotni v vektorju.
Ustvarite dva vektorja – »college1« in »college2«. »College1« vsebuje pet elementov, »college2« pa je prazen. Uporabi obe funkciji na obeh vektorjih in preveri izhod.
#include#include
#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - college1
vektor < vrvica > fakulteta1 = { 'koledž-A' , 'koledž-B' , 'koledž-C' , 'koledž-D' , 'koledž-E' } ;
// Ustvari vektor - college2
vektor < vrvica > fakulteta2 ;
// prazno()
cout << fakulteta1. prazno ( ) << konec ;
cout << fakulteta2. prazno ( ) << konec ;
// velikost()
cout << fakulteta1. velikost ( ) << konec ;
cout << fakulteta2. velikost ( ) << konec ;
}
Izhod:
Funkcija empty() vrne 0 za »college1« in 1 za »college2«. Funkcija size() vrne pet za »college1« in 0 za »college2«.
Prečkajte vektor z uporabo Const_Iterator
Ko delate na vsebnikih C++, kot so množice, vektorji itd., je mogoče ponoviti vse elemente, ki so prisotni v vsebniku, ne da bi jih spreminjali. The const_iterator je eden od iteratorjev, ki dosežejo ta scenarij. Cbegin() (kaže na prvi element v vektorju) in cend() (kaže na zadnji element v vektorju) sta dve funkciji, ki ju zagotavlja vsak vsebnik, ki se uporablja za vrnitev konstantnega iteratorja na začetek in konec posodo. Med ponavljanjem vektorja lahko uporabimo ti dve funkciji.
- Ustvarimo vektor z imenom 'oddelki' s petimi nizi.
- Deklarirajte const_iterator – ctr tipa
. - Ponavljajte oddelke z uporabo prejšnjega iteratorja z uporabo zanke »za« in ga prikažite.
#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - oddelki
vektor < vrvica > oddelki = { 'Prodaja' , 'Storitev' ,
'HR' , 'IT' , 'Drugi' } ;
vektor < vrvica > :: const_iterator ctr ;
// Iteracija po oddelkih z uporabo const_iterator - ctr.
za ( ctr = oddelki. cbegin ( ) ; ctr ! = oddelki. nekaj ( ) ; ctr ++ ) {
cout << * ctr << konec ;
}
}
Izhod:
Prečkajte vektor z uporabo Reverse_Iterator
The povratni_iterator je tudi iterator, ki je podoben const_iteratorju, vendar vrne elemente v obratni smeri. rbegin() (kaže na zadnji element v vektorju) in rend() (kaže na prvi element v vektorju) sta dve funkciji, ki ju nudi vsak vsebnik, ki se uporablja za vrnitev konstantnega iteratorja na konec in začetek posodo.
- Ustvarimo vektor z imenom 'oddelki' s petimi nizi.
- Deklarirajte reverse_iterator – rtr tipa
. - Ponavljajte oddelke z uporabo prejšnjega iteratorja z uporabo zanke »za« in ga prikažite.
#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - oddelki
vektor < vrvica > oddelki = { 'Prodaja' , 'Storitev' ,
'HR' , 'IT' , 'Drugi' } ;
vektor < vrvica > :: povratni_iterator rtr ;
// Iteracija po oddelkih z uporabo reverse_iterator - rtr.
za ( rtr = oddelki. rbegin ( ) ; rtr ! = oddelki. naredi ( ) ; rtr ++ ) {
cout << * rtr << konec ;
}
}
Izhod:
Potisnite elemente v vektor
Potiskanje ali dodajanje elementov v vektor je enosmerno vstavljanje, ki ga je mogoče izvesti z uporabo vektor::push_back() funkcijo.
Sintaksa:
vektor. porini nazaj ( element )Potrebuje element, ki ga potisnemo v vektor kot parameter.
Ustvarimo prazen vektor z imenom »oddelki« s petimi nizi in potisnimo dva niza enega za drugim s funkcijo push_back().
#include#include
uporabo imenski prostor std ;
glavni ( )
{
// Inicializiraj vektor - oddelki
vektor < vrvica > oddelki ;
cout << 'Dejanski oddelki:' << konec ;
za ( avto itr = oddelki. začeti ( ) ; itr ! = oddelki. konec ( ) ; ++ itr )
cout << * itr << konec ;
// Potisni 'Prodaja'
oddelki. porini nazaj ( 'Prodaja' ) ;
// Potisni'
oddelki. porini nazaj ( 'IT' ) ;
cout << ' \n Končni oddelki:' << konec ;
za ( avto itr = oddelki. začeti ( ) ; itr ! = oddelki. konec ( ) ; ++ itr )
cout << * itr << konec ;
}
Izhod:
Najprej potisnemo »Prodajo«. Po tem se 'IT' potisne v vektor. Zdaj ima vektor 'oddelki' dva elementa.
Izvlecite elemente iz vektorja
Če želite izbrisati zadnji element, ki je prisoten v vektorju, uporabite vektor::pop_back() funkcija je najboljši pristop. Izbriše zadnji element, ki je prisoten v vektorju.
Sintaksa:
vektor. pop_back ( )Za to funkcijo ni potreben noben parameter. Prikazuje nedefinirano vedenje, če poskušamo izbrisati zadnji element iz praznega vektorja.
Ustvarimo prazen vektor z imenom 'oddelki' s petimi nizi in izbrišemo zadnji element s prejšnjo funkcijo. Prikažite vektor v obeh primerih.
#include#include
uporabo imenski prostor std ;
glavni ( )
{
// Inicializiraj vektor - oddelki
vektor < vrvica > oddelki = { 'Prodaja' , 'IT' , 'Storitev' , 'trženje' , 'HR' } ;
cout << 'Dejanski oddelki:' << konec ;
za ( avto itr = oddelki. začeti ( ) ; itr ! = oddelki. konec ( ) ; ++ itr )
cout << * itr << konec ;
// Izbriši zadnji element
oddelki. pop_back ( ) ;
cout << ' \n Končni oddelki:' << konec ;
za ( avto itr = oddelki. začeti ( ) ; itr ! = oddelki. konec ( ) ; ++ itr )
cout << * itr << konec ;
}
Izhod:
»HR« je zadnji element, ki je prisoten v vektorju »oddelki«. Torej je odstranjen iz vektorja in končni vektor vsebuje »Prodaja«, »IT«, »Storitev« in »Trženje«.
Zamenjaj vektorje
The vektor::swap() funkcija v C++ STL se uporablja za zamenjavo vseh elementov, ki so prisotni v dveh vektorjih.
Sintaksa:
prvi_vektor. zamenjava ( drugi_vektor )Ne upošteva velikosti vektorjev, vendar morajo biti vektorji iste vrste (napaka se vrže, če so vrste vektorjev različne).
Ustvarimo dva vektorja - 'sadje' in 'zelenjava' - tipa niza različnih velikosti. Zamenjaj vsakega izmed njih in prikaži vektorje v obeh primerih.
#include#include
uporabo imenski prostor std ;
glavni ( )
{
// Inicializiraj vektor - sadje
vektor < vrvica > sadje = { 'jabolko' , 'Mango' } ;
cout << 'Pravi sadeži:' << konec ;
za ( avto itr = sadje. začeti ( ) ; itr ! = sadje. konec ( ) ; ++ itr )
cout << * itr << konec ;
// Inicializiraj vektor - zelenjava
vektor < vrvica > zelenjava = { 'Krompir' , 'paradižnik' , 'Brinjal' } ;
cout << ' \n Prava zelenjava:' << konec ;
za ( avto itr = zelenjava. začeti ( ) ; itr ! = zelenjava. konec ( ) ; ++ itr )
cout << * itr << konec ;
// Zamenjaj elemente v obeh vektorjih
sadje. zamenjava ( zelenjava ) ;
cout << ' \n Sadje po zamenjavi:' << konec ;
za ( avto itr = sadje. začeti ( ) ; itr ! = sadje. konec ( ) ; ++ itr )
cout << * itr << konec ;
cout << ' \n Zelenjava po zamenjavi:' << konec ;
za ( avto itr = zelenjava. začeti ( ) ; itr ! = zelenjava. konec ( ) ; ++ itr )
cout << * itr << konec ;
}
Izhod:
Prej je vektor »sadje« vseboval dva elementa, vektor »zelenjava« pa tri elemente. Po zamenjavi ima vektor 'sadje' tri elemente, vektor 'zelenjava' pa dva elementa.
Pridobite prvi element iz vektorja
V nekaterih primerih je zahteva vrniti samo prvi element vektorja. Funkcija vector::front() v C++ STL pridobi samo prvi element iz vektorja.
Sintaksa:
vektor. spredaj ( )Ta funkcija ne bo sprejela nobenega parametra. Če je vektor prazen, se prikaže napaka.
Ustvarimo dva vektorja - 'sadje' in 'zelenjava' - vrste niza in poskusimo pridobiti prvi element ločeno od obeh vektorjev.
#include#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - sadje z 2 elementoma
vektor < vrvica > sadje = { 'jabolko' , 'Mango' } ;
// Vrni prvi element
cout << sadje. spredaj ( ) << konec ;
// Inicializiraj vektor - zelenjava
vektor < vrvica > zelenjava ;
// Poskusite vrniti prvi element
cout << zelenjava. spredaj ( ) ;
}
Izhod:
»Jabolko« je prvi element, ki je prisoten v vektorju »sadje«. Torej je vrnjeno. Vendar pa pride do napake, ko poskušamo pridobiti prvi element iz vektorja 'zelenjave', ker je prazen.
Pridobi zadnji element iz vektorja
Funkcija vector::end() v C++ STL pridobi le zadnji element iz vektorja.
Sintaksa:
vektor. nazaj ( )Ta funkcija ne bo sprejela nobenega parametra. Če je vektor prazen, se prikaže napaka.
Ustvarimo dva vektorja - 'sadje' in 'zelenjava' - vrste niza in poskusimo pridobiti zadnji element ločeno od obeh vektorjev.
#include#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - sadje z 2 elementoma
vektor < vrvica > sadje = { 'jabolko' , 'Mango' } ;
// Pridobi zadnji element
cout << sadje. nazaj ( ) << konec ;
// Inicializiraj vektor - zelenjava
vektor < vrvica > zelenjava ;
// Poskusite pridobiti zadnji element
cout << zelenjava. nazaj ( ) ;
}
Izhod:
'Mango' je zadnji element, ki je prisoten v vektorju 'sadje'. Torej je vrnjeno. Vendar pa pride do napake, ko poskušamo pridobiti zadnji element iz vektorja 'zelenjave', ker je prazen.
Vektorju dodelite nove vrednosti
Če želite v nekaterih primerih posodobiti vse vrednosti z novo vrednostjo ali ustvariti vektor z enakimi vrednostmi, je uporaba funkcije vector::assign() najboljši pristop. S to funkcijo lahko:
- Ustvarite vektor z vsemi podobnimi elementi
- Spremenite obstoječi vektor z istim elementom
Sintaksa:
vektor. dodeliti ( velikost, vrednost )Za to funkcijo sta potrebna dva parametra.
Tukaj:
- Velikost določa število elementov, ki jih je treba dodeliti.
- Vrednost podaja element, ki ga je treba dodeliti.
Ustvarimo vektor z imenom 'marks1' s petimi vrednostmi in posodobimo ta vektor s štirimi elementi, tako da so vsi elementi v posodobljenem vektorju enaki 20.
#include#include
#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - oznake1
vektor < int > oznake1 = { 100 , 90 , 80 , 70 , 60 } ;
cout << 'Dejanski vektor:' << konec ;
za ( int jaz = 0 ; jaz < oznake1. velikost ( ) ; jaz ++ )
cout << oznake1 [ jaz ] << konec ;
oznake1. dodeliti ( 4 , dvajset ) ;
cout << ' \n Posodobljeni vektor:' << konec ;
za ( int jaz = 0 ; jaz < oznake1. velikost ( ) ; jaz ++ )
cout << oznake1 [ jaz ] << konec ;
}
Izhod:
Prej je vektor vseboval pet različnih elementov. Zdaj vsebuje samo štiri elemente in vsi so enaki 20.
Razširite vektor z uporabo Emplace()
Vemo že, da se novi elementi dinamično vstavijo na kateri koli položaj v vektorju. Možno je z uporabo funkcije vector::emplace(). Na hitro si poglejmo sintakso in parametre, ki jih sprejema ta funkcija.
Sintaksa:
vektor. lokacijo ( položaj iteratorja const, element )V to funkcijo sta posredovana dva obvezna parametra.
Tukaj:
- Prvi parameter zavzame pozicijo, tako da lahko element vstavimo na katerikoli položaj. Položaj lahko pridobimo s funkcijo iteratorja begin() ali end().
- Drugi parameter je element, ki ga je treba vstaviti v vektor.
Razmislite o vektorju 'kemikalije' z dvema elementoma.
- Na prvo mesto vstavite »Mangan« – začetek (kemikalije)
- Vstavite »Baker« na zadnji položaj – konec (kemikalije)
- Na tretjem mestu vstavite 'Sulphur' - začetek (kemikalije)+2
#include
#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - kemikalije
vektor < vrvica > kemikalije = { 'kisik' , 'CO' } ;
cout << 'Dejanske kemikalije:' << konec ;
za ( int jaz = 0 ; jaz < kemikalije. velikost ( ) ; jaz ++ )
cout << kemikalije [ jaz ] << konec ;
// Vstavi element na prvo mesto
kemikalije. lokacijo ( začeti ( kemikalije ) , 'mangan' ) ;
// Vstavi element na zadnji položaj
kemikalije. lokacijo ( konec ( kemikalije ) , 'Baker' ) ;
// Vstavi element na tretje mesto
kemikalije. lokacijo ( začeti ( kemikalije ) + 2 , 'Žveplo' ) ;
cout << ' \n Končne kemikalije:' << konec ;
za ( int jaz = 0 ; jaz < kemikalije. velikost ( ) ; jaz ++ )
cout << kemikalije [ jaz ] << konec ;
}
Izhod:
Zdaj končni vektor vsebuje pet elementov (na naslednjem posnetku zaslona).
Razširite vektor z uporabo Emplace_Back()
Element je mogoče dodati (dodajanje na koncu vektorja), kar lahko storite z uporabo vektor::emplace_back() funkcijo.
Sintaksa:
vektor. emplace_back ( element )Element, ki bo pripet vektorju, je treba posredovati kot parameter.
Dodajmo dva elementa enega za drugim s funkcijo emplace_back().
#include#include
#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - kemikalije
vektor < vrvica > kemikalije = { 'kisik' , 'CO' } ;
cout << 'Dejanske kemikalije:' << konec ;
za ( int jaz = 0 ; jaz < kemikalije. velikost ( ) ; jaz ++ )
cout << kemikalije [ jaz ] << konec ;
// Vstavi mangan na konec vektorja
kemikalije. emplace_back ( 'mangan' ) ;
// Vstavi mangan na konec vektorja
kemikalije. emplace_back ( 'Baker' ) ;
cout << ' \n Končne kemikalije:' << konec ;
za ( int jaz = 0 ; jaz < kemikalije. velikost ( ) ; jaz ++ )
cout << kemikalije [ jaz ] << konec ;
}
Izhod:
Zdaj ima končni vektor štiri elemente po dodajanju »mangana« in »bakra«.
Največji element vektorja
- Ustvarite vektor z nekaj elementi.
- Če želite najti največji element, ki je prisoten v vektorju, uporabite funkcijo *max_element(), ki kot argumenta sprejme dva iteratorja. Ta dva parametra delujeta kot obseg in največji element je vrnjen znotraj navedenega obsega. Začetni položaj je begin(), zadnji položaj pa end().
Oglejmo si vektor z imenom 'item_costs', ki vsebuje pet vrednosti tipa celih števil in vrne največji element.
#include#include
#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - item_costs
vektor < int > item_costs = { 8900 , 5677 , 200 , 1000 , 2300 } ;
cout << 'Cena artiklov: \n ' ;
za ( int jaz = 0 ; jaz < item_costs. velikost ( ) ; jaz ++ )
cout << item_costs [ jaz ] << konec ;
// Vrne največji element iz zgornjega vektorja - item_costs
cout << ' \n Najvišji stroški: ' << * max_element ( začeti ( item_costs ) ,konec ( item_costs ) ) ;
}
Izhod:
Tu je 8900 največji element med vsemi elementi, ki so prisotni v vektorju »item_costs«.
Najmanjši element vektorja
- Ustvarite vektor z nekaj elementi.
- Če želite najti najmanjši element, ki je prisoten v vektorju, uporabite funkcijo *min_element(), ki sprejme dva iteratorja kot argumenta. Ta dva parametra delujeta kot obseg in najmanjši element (manj kot vsi drugi elementi) je vrnjen znotraj navedenega obsega. Začetni položaj je begin(), zadnji položaj pa end().
Uporabite isti vektor, ki je ustvarjen, da poiščete največji element in poiščete najmanjši element s funkcijo *min_element().
#include#include
#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - item_costs
vektor < int > item_costs = { 8900 , 5677 , 200 , 1000 , 2300 } ;
cout << 'Cena artiklov: \n ' ;
za ( int jaz = 0 ; jaz < item_costs. velikost ( ) ; jaz ++ )
cout << item_costs [ jaz ] << konec ;
// Vrne najmanjši element iz zgornjega vektorja - item_costs
cout << ' \n Minimalni stroški: ' << * min_element ( začeti ( item_costs ) ,konec ( item_costs ) ) ;
}
Izhod:
Tukaj je 200 najmanjši element med vsemi elementi, ki so prisotni v vektorju »item_costs«.
Vsota elementov v vektorju
Če želite vrniti vsoto vseh elementov, ki so prisotni v vektorju, je kopičiti () se uporablja funkcija v C++ STL. Sprejema tri parametre. Prvi parameter vzame prvi indeks, ki predstavlja začetni element v obsegu (določite iterator begin()), drugi parameter pa vzame zadnji indeks, ki predstavlja končni element v obsegu (določite iterator end()). Nazadnje moramo posredovati začetno vrednost vsote (v našem primeru je 0).
kopičiti ( prvi_indeks, zadnji_indeks, začetna_val ) ;Ustvarite vektor z imenom “item_costs” s petimi elementi celih števil in izračunajte vsoto.
#includeuporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - item_costs
vektor < int > item_costs = { 8900 , 5677 , 200 , 1000 , 2300 } ;
cout << 'Cena artiklov: \n ' ;
za ( int jaz = 0 ; jaz < item_costs. velikost ( ) ; jaz ++ )
cout << item_costs [ jaz ] << konec ;
// Vrne vsoto vseh elementov v zgornjem vektorju - item_costs
cout << ' \n Skupni stroški: ' << kopičiti ( začeti ( item_costs ) ,konec ( item_costs ) , 0 ) ;
}
Izhod:
Vsota 8900, 5677, 200, 1000, 2300 je 18077.
Elementno množenje dveh vektorjev
- Ustvarite dva vektorja s tipom numeric in dva vektorja morata biti enake velikosti (skupno število elementov v prvem vektorju = skupno število elementov v drugem vektorju).
- Označite nov vektor in uporabite za zanko , izvede operacijo množenja na dveh elementih v vsaki ponovitvi in shrani vrednost v ustvarjeni vektor s funkcijo push_back(). za ( int itr = 0 ; jaz < prvi_vec. velikost ( ) ; itr ++ )
- Prikažite elemente, ki so prisotni v nastalem vektorju, tako da ga ponovite.
{
rezultat_vektor. porini nazaj ( prvi_vec [ itr ] * sec_thing [ itr ] ) ;
}
Ustvarite vektor z imenom “item_costs” s petimi elementi celih števil in izračunajte vsoto.
#includeuporabo imenski prostor std ;
glavni ( )
{
// Ustvari dva vektorja - products1 in products2 s po 5 elementi
vektor < int > izdelki1 = { 10 , dvajset , 30 , 40 , petdeset } ;
vektor < int > izdelki2 = { petdeset , 40 , 30 , 70 , 60 } ;
vektor < int > rezultat_izdelkov ;
// Izvedi množenje po elementih
za ( int jaz = 0 ; jaz < izdelki1. velikost ( ) ; jaz ++ ) {
rezultat_izdelkov. porini nazaj ( izdelki1 [ jaz ] * izdelki2 [ jaz ] ) ;
}
// Prikaži rezultantni vektor
cout << 'Vektorsko množenje: \n ' ;
za ( int res : rezultat_izdelkov )
cout << res << konec ;
}
Izhod:
Ponovitev - 1 : 10 * petdeset => 500Ponovitev - 2 : dvajset * 40 => 800
Ponovitev - 3 : 30 * 30 => 900
Ponovitev - 4 : 40 * 70 => 2800
Ponovitev - 5 : petdeset * 60 => 3000
Pikčasti produkt dveh vektorjev
V primeru vektorjev C++ je pikčasti produkt definiran kot 'vsota produktov ustreznih vnosov dveh zaporedij vektorjev'.
Sintaksa:
notranji_izdelek ( Vektor1 prvi, Vektor1 zadnji, Vektor2 prvi, Začetna_Val )Za vrnitev pikčastega zmnožka uporabite funkcijo inner_product(). Ta funkcija ima štiri zahtevane parametre.
Tukaj:
- Prvi parameter se nanaša na iterator, ki kaže na začetek prvega vektorja (določite s funkcijo begin().
- Drugi parameter se nanaša na iterator, ki kaže na konec prvega vektorja (podajte s funkcijo end()).
- Tretji parameter se nanaša na iterator, ki kaže na začetek drugega vektorja (določite s funkcijo begin().
- Začetno vrednost je treba posredovati kot zadnji parameter, ki je celo število za kopičenje pikčastega produkta.
Uporabite isti program, ki je ustvarjen za množenje dveh vektorjev, in uporabite funkcijo innsr_product(), da poiščete pikčasti produkt obeh vektorjev.
#includeuporabo imenski prostor std ;
glavni ( )
{
// Ustvari dva vektorja - products1 in products2 s po 5 elementi
vektor < int > izdelki1 = { 10 , dvajset , 30 , 40 , petdeset } ;
vektor < int > izdelki2 = { petdeset , 40 , 30 , 70 , 60 } ;
// Prikaži rezultantni vektor
cout << 'Dot Product of products1 and products2: ' ;
cout << notranji_izdelek ( začeti ( izdelki1 ) ,konec ( izdelki1 ) ,začeti ( izdelki2 ) , 0 ) ;
}
Izhod:
( 10 * petdeset ) + ( dvajset * 40 ) + ( 30 * 30 ) + ( 40 * 70 ) + ( petdeset * 60 )=> 500 + 800 + 900 + 2800 + 3000
=> 8000
Pretvori nabor v vektor
Obstaja veliko načinov za pretvorbo množice v vektor s posredovanjem vseh elementov, ki so dvignjeni v množici, v vektor. Najboljši in najenostavnejši način je uporaba funkcije std::copy().
Sintaksa
std :: kopirati ( izvorniIterator prvi, izvorniIterator zadnji, destinacijskiIterator prvi )Uporabi std::copy() funkcija, ki vstavi elemente iz niza v vektor. Zahteva tri parametre.
Tukaj:
- Prvi parameter se nanaša na izvorni iterator, ki kaže na prvi element v iteratorju. Tukaj je set izvorni iterator, ki je določen s funkcijo begin().
- Podobno drugi parameter kaže na zadnji element (funkcija end().
- Tretji parameter se nanaša na ciljni iterator, ki kaže na prvi element (podan s funkcijo begin()) v iteratorju.
Ustvarimo nabor s petimi učenci in kopirajmo vse elemente v vektor s prejšnjo funkcijo.
#includeuporabo imenski prostor std ;
glavni ( )
{
// Ustvarite nabor - učenci s 5 elementi
set < vrvica > študenti = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' } ;
cout << 'Nastavi: \n ' ;
za ( niz i : študenti )
cout << jaz << konec ;
// Ustvari vektor - velikost student_vcof je enaka velikosti nabora
vektor < vrvica > študent_vc ( študenti. velikost ( ) ) ;
// Vstavi elemente iz nabora - študentov v vektor - študent_vc.
kopirati ( študenti. začeti ( ) , študenti. konec ( ) , študent_vc. začeti ( ) ) ;
cout << ' \n Vektor: \n ' ;
za ( niz i : študent_vc )
cout << jaz << konec ;
}
Izhod:
Zdaj so vsi elementi, ki so prisotni v naboru »Students«, prekopirani v vektor »students_vc«.
Odstranite podvojene elemente
- Najprej moramo razvrstiti elemente v vektorju, tako da bodo vsi podvojeni elementi sosednji drug drugemu z uporabo std::sort() funkcijo. std :: vrsta ( Prvi vektor, zadnji vektor ) ;
- Uporabite funkcijo std::unique(), da bodo izbrani podvojeni elementi. Istočasno uporabite funkcijo erase(), da odstranite dvojnike, ki jih vrne funkcija std::unique(). Vrstni red elementov se lahko spremeni v končnem vektorju. vektor. izbrisati ( std :: edinstveno ( Prvi vektor, zadnji vektor ) , Vektor zadnjič ) )
Ustvarite vektor »študentov« z 10 elementi in vrnite vektor tako, da odstranite dvojnike.
#includeuporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - učenci z 10 elementi
vektor < vrvica > študenti = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' ,
'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' } ;
cout << 'Učenci: \n ' ;
za ( niz i : študenti )
cout << jaz << ' ' ;
// Razvrsti vse elemente v vektorju študentov.
vrsta ( začeti ( študenti ) , konec ( študenti ) ) ;
// Uporabite funkcijo unique(), da odstranite dvojnike s funkcijo erase().
študenti. izbrisati ( edinstveno ( začeti ( študenti ) , konec ( študenti ) ) , konec ( študenti ) ) ;
cout << ' \n \n Edinstveni študenti: \n ' ;
za ( avto itr = cbegin ( študenti ) ; itr ! = nekaj ( študenti ) ; ++ itr ) {
cout << * itr << ' ' ;
}
}
Izhod:
Zdaj so vsi elementi edinstveni v vektorju.
Pretvori vektor v niz
Set ne dovoljuje podvojenih elementov. Če tipkate za vstavljanje vektorja v niz z dvojniki, bodo prezrti. Uporabljamo isto funkcijo std::copy(), ki je bila uporabljena v prejšnjem scenariju, ki je nabor pretvoril v vektor.
V tem primeru:
- Prvi parameter vzame vektor kot izvorni iterator, ki je določen s funkcijo begin().
- Drugi parameter vzame vektor kot izvorni iterator, ki je določen s funkcijo end().
- Posredujte funkcijo std::inserter(), ki se uporablja za samodejno prepisovanje/kopiranje elementov na določenem mestu v naboru, tako da kot parametra zagotovite nabor in iterator, ki kažeta na konec nabora.
Ustvarimo vektor z 10 celimi števili in kopirajmo elemente v niz.
#includeuporabo imenski prostor std ;
glavni ( )
{
// Ustvari niz - oznake z 10 vrednostmi
vektor < int > oznake = { 12 , 3. 4 , 56 , 78 , 65 , 78 , 90 , 90 , 78 , 3. 4 } ;
cout << 'Vektor: \n ' ;
za ( int jaz : oznake )
cout << jaz << ' ' ;
// Ustvari nabor - nabor oznak velikosti, ki je enaka velikosti vektorja
set < int > oznake_set ;
// Vstavi elemente iz nabora - študentov v vektor - študent_vc.
kopirati ( začeti ( oznake ) ,konec ( oznake ) , vstavljalec ( marks_set,end ( oznake_set ) ) ) ;
cout << ' \n \n Set: \n ' ;
za ( int jaz : oznake_set )
cout << jaz << ' ' ;
}
Izhod:
Obstoječi vektor z imenom »oznake« ima 10 vrednosti. Po kopiranju v niz 'marks_set' vsebuje le šest elementov, ker so drugi štirje elementi podvojeni.
Odstranite prazne nize
Prazni nizi, ki so prisotni v vektorju, se ne uporabljajo. Dobra praksa je, da odstranite prazne nize, ki so prisotni v vektorju. Poglejmo, kako odstraniti prazne nize iz vektorja C++:
- Ponavljajte vektor z zanko »za«.
- V vsaki ponovitvi preverite, ali je element prazen (“”) ali ne uporabite operatorja “==” s funkcijo člana at().
- S funkcijo std::erase() odstranite prazne nize po preverjanju prejšnjega pogoja.
- Ponavljajte 2. in 3. korak do konca vektorja.
Ustvarimo vektor 'podjetja' z 10 nizi. Med njimi je pet praznih in jih odstranimo z izvedbo prejšnjega pristopa.
#include#include
uporabo imenski prostor std ;
glavni ( ) {
vektor < vrvica > podjetja { 'Podjetje-A' , '' , 'Podjetje-B' ,
'' , 'Podjetje-C' , '' , 'Podjetje-D' , '' , '' , '' } ;
// Ponavljamo podjetja
// in odstranite prazne elemente z erase()
za ( int itr = 1 ; itr < podjetja. velikost ( ) ; ++ itr ) {
če ( podjetja. pri ( itr ) == '' ) {
podjetja. izbrisati ( podjetja. začeti ( ) + itr ) ;
-- itr ;
}
}
// Prikaži vektor
za ( avto & jaz : podjetja ) {
cout << jaz << konec ;
}
}
Izhod:
Zdaj vektor »podjetja« vsebuje neprazne nize.
Zapišite vektor v besedilno datoteko
Pogovorimo se o tem, kako zapisati vse elemente, ki so prisotni v vektorju, v datoteko z uporabo vektorskih indeksov z uporabo fstream .
- Vanj potisnite nekaj elementov s funkcijo push_back po inicializaciji vektorja.
- Uporabite funkcijo open() iz knjižnice »fstream« z načinom out.
- Prečkajte vsak element, ki je prisoten v vektorju, z uporabo indeksov v zanki »za« in zapišite vsak element v podano datoteko.
- Na koncu zaprite datoteko.
Implementirajmo prejšnji pristop z izvajanjem kode C++.
#include#include
#include
#include
uporabo imenski prostor std ;
glavni ( )
{
// Ustvari vektor - v_data
// in vanj potisnite dva elementa.
vektor < vrvica > v_podatki ;
v_podatki. porini nazaj ( 'dobrodošli' ) ;
v_podatki. porini nazaj ( 'v LinuxHint' ) ;
tok f ;
// Odpri datoteko
f. odprto ( 'napisana_datoteka.txt' ,ios_base :: ven ) ;
// Ponovite vsak element vektorja in enega za drugim zapišite v datoteko.
za ( int jaz = 0 ; jaz < v_podatki. velikost ( ) ; jaz ++ )
{
f << v_podatki [ jaz ] << konec ;
}
// Zaprite datoteko
f. blizu ( ) ;
}
Izhod:
Vektor »v_data« vsebuje dva elementa in na poti, kjer se izvaja program, je ustvarjena datoteka z elementi, ki so prisotni v vektorju.
Ustvarite vektor iz besedilne datoteke
Naučili smo se zapisati elemente, ki so prisotni v vektorju, v besedilno datoteko. Tukaj ustvarimo vektor iz vsebine, ki je prisotna v besedilni datoteki.
- Ustvari ' ifstream' spremenljivka, ki se uporablja za branje informacij iz besedilne datoteke, v kateri ustvarimo vektor iz datoteke.
- Ustvarite prazen vektor za shranjevanje vsebine datoteke in uporabite prazno spremenljivko niza kot zastavico za preverjanje konca datoteke.
- Preberite naslednjo vrstico iz datoteke, dokler ne doseže konca (v bistvu z uporabo zanke 'while'). Uporabite funkcijo push_back(), da preberete naslednjo vrstico in jo potisnete v vektor.
- Ločeno prikažite vrstico, ki je prisotna v vrstici, da vidite elemente, ki so prisotni v vektorju na konzoli.
Implementirajmo prejšnji pristop z zagonom kode C++. Oglejmo si datoteko »data.txt« z naslednjo vsebino. Tukaj je ime vektorja 'v_data'.
#include
uporabo imenski prostor std ;
glavni ( )
{
// Odpri besedilno datoteko - podatki
datoteka ifstream ( 'podatki.txt' ) ;
// Ustvari vektor - v_data tipa - niz
vektor < vrvica > v_podatki ;
tangice so bile ;
// Preberite naslednjo vrstico iz data.txt
// dokler ne pride do konca.
medtem ( mapa >> je bil ) {
// Preberite naslednjo vrstico in potisnite v v_data
v_podatki. porini nazaj ( je bil ) ;
}
// Ločeno prikaže vrstico, ki je prisotna v vrstici.
kopirati ( v_podatki. začeti ( ) , v_podatki. konec ( ) , ostream_iterator < vrvica > ( cout , ' \n ' ) ) ;
}
Izhod:
Vidimo lahko, da »v_data« vsebuje pet elementov, ki prihajajo iz datoteke.
Zaključek
V tem dolgem članku smo raziskali vse možne primere, ki se uporabljajo v aplikacijah v realnem času, povezanih z vektorji v programskem jeziku C++. Vsak primer je razložen s sintakso, parametri in primer z izhodom. Komentarji so dodani v vsako kodo, da dobite jasno razumevanje kode.