30 primerov vektorjev C++

30 Primerov Vektorjev C



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:

  1. Predstavljanje matematičnih vektorjev v znanstvenih in inženirskih aplikacijah
  2. 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:

  1. Vstavite element v vektor
  2. Vstavite več elementov v vektor
  3. Dostop do elementov iz vektorja
  4. Posodobite element v vektorju
  5. Odstranite določen element iz vektorja
  6. Odstranite vse elemente iz vektorja
  7. Zveza vektorjev
  8. Presek vektorjev
  9. Preverite, ali je vektor prazen ali ne
  10. Prečkaj vektor z uporabo Const_Iterator
  11. Prečkaj vektor z uporabo Reverse_Iterator
  12. Potisnite elemente v vektor
  13. Izvlecite elemente iz vektorja
  14. Zamenjaj vektorje
  15. Pridobite prvi element iz vektorja
  16. Pridobi zadnji element iz vektorja
  17. Vektorju dodelite nove vrednosti
  18. Razširite vektor z uporabo Emplace()
  19. Razširite vektor z uporabo Emplace_Back()
  20. Največji element vektorja
  21. Najmanjši element vektorja
  22. Vsota elementov v vektorju
  23. Elementno množenje dveh vektorjev
  24. Pikčasti produkt dveh vektorjev
  25. Pretvori nabor v vektor
  26. Odstranite podvojene elemente
  27. Pretvori vektor v niz
  28. Odstranite prazne nize
  29. Zapišite vektor v besedilno datoteko
  30. 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().

#include

uporabo 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:

  1. 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.
  2. Parameter velikosti določa, kolikokrat naj bo element vstavljen.
  3. 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.

#include

uporabo 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:

  1. Parameter položaja določa položaj elementa, ki bo vstavljen.
  2. '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).
  3. »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'.

#include

uporabo 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.

#include

uporabo 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.

#include

uporabo 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 ] = Element

Razmislite 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 ) = Element

Razmislite o vektorju »izdelki« s petimi postavkami. Posodobite vse elemente v vektorju z drugimi elementi.

#include

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 ;

//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.

  1. 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.
  2. Odstranite zadnji element tako, da podate iterator end(). End() kaže na zadnji element v vektorju.
#include

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).

#include

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 ;



// 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().

#include

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 ;



// 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:

  1. 'First1' kaže na prvi element prvega iteratorja (vektorja).
  2. »Last1« kaže na zadnji element prvega iteratorja (vektorja).
  3. 'First2' kaže na prvi element drugega iteratorja (vektorja).
  4. »Last2« kaže na zadnji element drugega iteratorja (vektorja).

Ustvarite dva vektorja – »subjects1« in »subjects2« – tipa integer.

  1. Razvrstite oba vektorja s funkcijo sort() s posredovanjem iteratorjev.
  2. Ustvarite izhodni vektor (iterator).
  3. Poiščite unijo teh dveh vektorjev s funkcijo std::set_union(). Uporabite begin() kot prvi iterator in end() kot zadnji iterator.
  4. Ponovite izhodni vektor za prikaz elementov, ki jih vrne funkcija.
#include

#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.

  1. Razvrstite oba vektorja s funkcijo sort() s posredovanjem iteratorjev.
  2. Ustvarite izhodni vektor (iterator).
  3. Poiščite presečišče teh dveh vektorjev s funkcijo std::set_intersection(). Uporabite begin() kot prvi iterator in end() kot zadnji iterator.
  4. Ponovite izhodni vektor za prikaz elementov, ki jih vrne funkcija.
#include

#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.

  1. Ustvarimo vektor z imenom 'oddelki' s petimi nizi.
  2. Deklarirajte const_iterator – ctr tipa .
  3. Ponavljajte oddelke z uporabo prejšnjega iteratorja z uporabo zanke »za« in ga prikažite.
#include

#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.

  1. Ustvarimo vektor z imenom 'oddelki' s petimi nizi.
  2. Deklarirajte reverse_iterator – rtr tipa .
  3. Ponavljajte oddelke z uporabo prejšnjega iteratorja z uporabo zanke »za« in ga prikažite.
#include

#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:

  1. Ustvarite vektor z vsemi podobnimi elementi
  2. Spremenite obstoječi vektor z istim elementom

Sintaksa:

vektor. dodeliti ( velikost, vrednost )

Za to funkcijo sta potrebna dva parametra.

Tukaj:

  1. Velikost določa število elementov, ki jih je treba dodeliti.
  2. 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:

  1. Prvi parameter zavzame pozicijo, tako da lahko element vstavimo na katerikoli položaj. Položaj lahko pridobimo s funkcijo iteratorja begin() ali end().
  2. Drugi parameter je element, ki ga je treba vstaviti v vektor.

Razmislite o vektorju 'kemikalije' z dvema elementoma.

  1. Na prvo mesto vstavite »Mangan« – začetek (kemikalije)
  2. Vstavite »Baker« na zadnji položaj – konec (kemikalije)
  3. Na tretjem mestu vstavite 'Sulphur' - začetek (kemikalije)+2
#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 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

  1. Ustvarite vektor z nekaj elementi.
  2. Č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().
* max_element ( prvi_indeks,zadnji_indeks )

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

  1. Ustvarite vektor z nekaj elementi.
  2. Č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().
* min_element ( prvi_indeks,zadnji_indeks )

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.

#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 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

  1. 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).
  2. 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().
  3. za ( int itr = 0 ; jaz < prvi_vec. velikost ( ) ; itr ++ )

    {

    rezultat_vektor. porini nazaj ( prvi_vec [ itr ] * sec_thing [ itr ] ) ;

    }
  4. Prikažite elemente, ki so prisotni v nastalem vektorju, tako da ga ponovite.

Ustvarite vektor z imenom “item_costs” s petimi elementi celih števil in izračunajte vsoto.

#include

uporabo 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 => 500

Ponovitev - 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:

  1. Prvi parameter se nanaša na iterator, ki kaže na začetek prvega vektorja (določite s funkcijo begin().
  2. Drugi parameter se nanaša na iterator, ki kaže na konec prvega vektorja (podajte s funkcijo end()).
  3. Tretji parameter se nanaša na iterator, ki kaže na začetek drugega vektorja (določite s funkcijo begin().
  4. 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.

#include

uporabo 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:

  1. 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().
  2. Podobno drugi parameter kaže na zadnji element (funkcija end().
  3. 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.

#include

uporabo 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

  1. Najprej moramo razvrstiti elemente v vektorju, tako da bodo vsi podvojeni elementi sosednji drug drugemu z uporabo std::sort() funkcijo.
  2. std :: vrsta ( Prvi vektor, zadnji vektor ) ;
  3. 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.
  4. vektor. izbrisati ( std :: edinstveno ( Prvi vektor, zadnji vektor ) , Vektor zadnjič ) )

Ustvarite vektor »študentov« z 10 elementi in vrnite vektor tako, da odstranite dvojnike.

#include

uporabo 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:

  1. Prvi parameter vzame vektor kot izvorni iterator, ki je določen s funkcijo begin().
  2. Drugi parameter vzame vektor kot izvorni iterator, ki je določen s funkcijo end().
  3. 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.

#include

uporabo 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++:

  1. Ponavljajte vektor z zanko »za«.
  2. V vsaki ponovitvi preverite, ali je element prazen (“”) ali ne uporabite operatorja “==” s funkcijo člana at().
  3. S funkcijo std::erase() odstranite prazne nize po preverjanju prejšnjega pogoja.
  4. 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 .

  1. Vanj potisnite nekaj elementov s funkcijo push_back po inicializaciji vektorja.
  2. Uporabite funkcijo open() iz knjižnice »fstream« z načinom out.
  3. Prečkajte vsak element, ki je prisoten v vektorju, z uporabo indeksov v zanki »za« in zapišite vsak element v podano datoteko.
  4. 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.

  1. Ustvari ' ifstream' spremenljivka, ki se uporablja za branje informacij iz besedilne datoteke, v kateri ustvarimo vektor iz datoteke.
  2. Ustvarite prazen vektor za shranjevanje vsebine datoteke in uporabite prazno spremenljivko niza kot zastavico za preverjanje konca datoteke.
  3. 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.
  4. 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.