30 Príklady vektorov C++

30 Priklady Vektorov C



V C++ je Vektor jednorozmerná dátová štruktúra, ktorá sa dynamicky zvyšuje na základe požiadavky. V tejto dátovej štruktúre je možné efektívne organizovať údaje (vkladanie/úprava/vymazanie). Jeho aplikácie zahŕňajú nasledujúce:

  1. Reprezentácia matematických vektorov vo vedeckých a inžinierskych aplikáciách
  2. Pomocou tejto dátovej štruktúry je možné implementovať fronty, zásobníky atď.

Väčšina bežných operácií a funkcií CRUD súvisiacich s touto dátovou štruktúrou je podrobne prediskutovaná so syntaxou a útržkami kódu.







Téma obsahu:

  1. Vložte prvok do vektora
  2. Vložte viacero prvkov do vektora
  3. Prístup k prvkom z vektora
  4. Aktualizujte prvok vo vektore
  5. Odstráňte konkrétny prvok z vektora
  6. Odstráňte všetky prvky z vektora
  7. Únia vektorov
  8. Priesečník vektorov
  9. Skontrolujte, či je vektor prázdny alebo nie
  10. Prejdite vektorom pomocou Const_Iterator
  11. Prejdite vektorom pomocou Reverse_Iterator
  12. Zatlačte prvky do vektora
  13. Vyberte prvky z vektora
  14. Vymeňte vektory
  15. Získajte prvý prvok z vektora
  16. Získajte posledný prvok z vektora
  17. Priraďte vektoru nové hodnoty
  18. Rozšírte vektor pomocou Emplace()
  19. Rozšírte vektor pomocou Emplace_Back()
  20. Maximálny prvok vektora
  21. Minimálny prvok vektora
  22. Súčet prvkov vo vektore
  23. Elementárne násobenie dvoch vektorov
  24. Bodový súčin dvoch vektorov
  25. Previesť sadu na vektor
  26. Odstráňte duplicitné prvky
  27. Previesť vektor na množinu
  28. Odstráňte prázdne struny
  29. Napíšte vektor do textového súboru
  30. Vytvorte vektor z textového súboru

Vložte prvok do vektora

The std::vector::insert() funkcia v C++ STL sa používa na vloženie prvkov na zadanú pozíciu.



Syntax:

vektor. vložiť ( pozícia, prvok ) ;

Využime túto funkciu a odovzdajme prvú pozíciu ako parameter, ktorý určuje pozíciu, kde sa má prvok vložiť, a poskytneme prvok ako druhý parameter.



Funkciu begin() tu možno použiť na vrátenie iterátora, ktorý ukazuje na prvý prvok vstupného vektora. Pridaním pozície do tejto funkcie sa prvok vloží na túto pozíciu.





Vytvorme vektor „mená_študentov“ typu string a pomocou funkcie insert() vložíme dva reťazce na prvé a druhé miesto jeden po druhom.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Inicializácia vektora - mená študentov

vektor < reťazec > mená_študentov ;

cout << 'Existujúci vektor: \n ' ;

pre ( auto i : mená_študentov ) cout << i << endl ;

// Vložte 'Sravan Kumar' na prvé miesto

mená_študentov. vložiť ( mená_študentov. začať ( ) + 0 , 'Shravan Kumar' ) ;

// Vložte 'Sravan Kumar' na druhú pozíciu

mená_študentov. vložiť ( mená_študentov. začať ( ) + 1 , 'Lalitha' ) ;

cout << 'Konečný vektor: \n ' ;

pre ( auto j : mená_študentov ) cout << j << endl ;

}

Výkon:

Predtým bol vektor „mená študentov“ prázdny. Po vložení vektor obsahuje dva prvky.



Vložte viacero prvkov do vektora

V tomto scenári používame rovnakú funkciu, aká je std::vector::insert(). Na vloženie viacerých prvkov do vektora však potrebujeme odovzdať extra/rôzne parametre tej istej funkcii.

Scenár 1: Vloženie jedného prvku viackrát

V tomto scenári pridávame rovnaký prvok viackrát.

Syntax:

vektor. vložiť ( poloha, veľkosť, prvok ) ;

Aby sme to dosiahli, musíme funkcii insert() odovzdať veľkosť ako druhý parameter. Celkové parametre, ktoré sú odovzdané tejto funkcii, sú tri.

Tu:

  1. Parameter position určuje polohu prvku, ktorý sa má vložiť. Ak je veľkosť väčšia ako 1, index počiatočnej pozície bude pozícia.
  2. Parameter size určuje, koľkokrát sa má prvok vložiť.
  3. Parameter prvku berie prvok, ktorý sa má vložiť do vektora.

Zvážte vektor „mená_študentov“ s dvoma reťazcami. Vložte reťazce „Lavanya“ päťkrát na druhú pozíciu.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Inicializácia vektora - mená študentov

vektor < reťazec > mená_študentov { 'Shravan Kumar' , 'Lalitha' } ;

cout << 'Existujúci vektor: \n ' ;

pre ( auto i : mená_študentov ) cout << i << endl ;

// Vložte 'Lavanya' na druhú pozíciu 5-krát

mená_študentov. vložiť ( mená_študentov. začať ( ) + 1 , 5 , 'Lavanya' ) ;

cout << ' \n Konečný vektor: \n ' ;

pre ( auto j : mená_študentov ) cout << j << endl ;

}

Výkon:

V existujúcom vektore je „Sravan Kumar“ na prvej pozícii a „Lalitha“ je na druhej pozícii. Po piatich vložení „Lavanya“ (z druhej pozície na šiestu pozíciu) sa „Lalitha“ posunula na siedmu pozíciu (poslednú).

Scenár 2: Vloženie viacerých prvkov

V tomto scenári pridávame rôzne prvky naraz z iného vektora. Aj tu používame rovnakú funkciu, ale syntax a parametre sa zmenia.

Syntax:

vektor. vložiť ( pozícia, prvý_iterátor, druhý_iterátor ) ;

Aby sme to dosiahli, musíme funkcii insert() odovzdať veľkosť ako druhý parameter. Celkové parametre, ktoré sú odovzdané tejto funkcii, sú tri.

Tu:

  1. Parameter position určuje polohu prvku, ktorý sa má vložiť.
  2. „first_iterator“ určuje počiatočnú pozíciu, z ktorej sa majú prvky vložiť (v podstate sa pomocou funkcie begin() vráti iterátor, ktorý ukazuje na prvý prvok, ktorý sa nachádza v kontajneri).
  3. „second_iterator“ určuje koncovú pozíciu, do ktorej sa majú prvky vložiť (v podstate sa pomocou funkcie end() vráti iterátor, ktorý ukazuje vedľa posledného bodu, ktorý sa nachádza v kontajneri).

Vytvorte dva vektory, „marks1“ a „marks2“, celočíselného typu. Vložte všetky prvky, ktoré sú prítomné vo vektore „marks2“ na prvú pozíciu vektora „marks1“.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Inicializácia vektora - značky1

vektor < int > známky1 { 100 , 89 , 90 , 78 , 98 } ;

cout << 'Prvý vektor: \n ' ;

pre ( auto i : známky1 ) cout << i << endl ;

// Inicializácia vektora - marks2

vektor < int > známky2 { 56 , Štyri, päť , 65 } ;

cout << 'Druhý vektor: \n ' ;

pre ( auto j : známky2 ) cout << j << endl ;

známky1. vložiť ( začať ( známky1 ) , začať ( známky2 ) , koniec ( známky2 ) ) ;



// Finálny vektor

cout << 'Prvý-finálny vektor: \n ' ;

pre ( auto X : známky1 )

cout << X << '' ;

}

Výkon:

Prvý vektor (marks1) obsahuje päť prvkov a druhý vektor (marks2) obsahuje tri prvky. Parametre begin (marks1), begin(marks2), end(marks2) sme odovzdali funkcii „insert“ tak, že všetky prvky, ktoré sú prítomné v druhom vektore, sa iterujú a vložia sa na začiatok do prvého vektora. Prvý vektor teda obsahuje osem prvkov.

Prístup k prvkom z vektora

1. Pomocou operátora []

V niektorých scenároch môžete mať požiadavku vrátiť iba špecifické prvky z vektora. Vrátenie všetkých prvkov nie je potrebné. Na vrátenie iba špecifických prvkov založených na indexe sa teda používa operátor indexu a funkcie at().

Syntax:

vektor [ index_position ]

V C++ začína indexovanie od 0 pre akúkoľvek dátovú štruktúru. Ak prvok neexistuje, vráti sa prázdny (nezobrazí sa žiadna chyba ani upozornenie).

Zvážte vektor „produktov“ s piatimi položkami. Prístup ku všetkým prvkom jeden po druhom pomocou pozície indexu.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - produkty s 5 reťazcami

vektor < reťazec > Produkty { 'mydlo' , 'šampón' , 'olej' , 'ovocie' , 'zelenina' } ;

//Prístup k prvkom z produktov

cout << 'Prvý prvok:' << Produkty [ 0 ] << endl ;

cout << 'Druhý prvok:' << Produkty [ 1 ] << endl ;

cout << 'Tretí prvok:' << Produkty [ 2 ] << endl ;

cout << 'Štvrtý prvok:' << Produkty [ 3 ] << endl ;

cout << 'Piaty element:' << Produkty [ 4 ] << endl ;



// Pokúste sa získať prístup k 9. prvku

cout << 'Deviaty element:' << Produkty [ 8 ] << endl ;

}

Výkon:

V indexe 8 nie je prítomný žiadny prvok. Vráti sa teda prázdne.

2. Pomocou funkcie At().

At() je členská funkcia, ktorá je podobná predchádzajúcemu prípadu použitia, ale vracia výnimku „std::out_of_range“, keď je jej poskytnutý index mimo rozsahu.

Syntax:

vektor. pri ( index_position )

Tejto funkcii musíme odovzdať pozíciu indexu.

Zvážte vektor „produktov“ s piatimi položkami. Postupne pristupujte ku všetkým prvkom pomocou pozície indexu a pokúste sa získať prístup k prvku, ktorý sa nachádza na 9. pozícii.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - produkty s 5 reťazcami

vektor < reťazec > Produkty { 'mydlo' , 'šampón' , 'olej' , 'ovocie' , 'zelenina' } ;

//Prístup k prvkom z produktov

cout << 'Prvý prvok:' << Produkty. pri ( 0 ) << endl ;

cout << 'Druhý prvok:' << Produkty. pri ( 1 ) << endl ;

cout << 'Tretí prvok:' << Produkty. pri ( 2 ) << endl ;

cout << 'Štvrtý prvok:' << Produkty. pri ( 3 ) << endl ;

cout << 'Piaty element:' << Produkty. pri ( 4 ) << endl ;



//Prístup k prvkom, ktoré nie sú vo vektore

cout << 'Deviaty element:' << Produkty. pri ( 8 ) << endl ;

}

Výkon:

Pri prístupe k 9. prvku sa vyskytla chyba:

po vyvolaní inštancie of 'std::out_of_range'

čo ( ) : vektor :: _M_range_check : __n ( ktorý je 8 ) >= toto - > veľkosť ( ) ( ktorý je 5 )

Aktualizujte prvok vo vektore

1. Pomocou operátora []

Pomocou pozície indexu môžeme aktualizovať prvok vo vektore. Operátor [] preberá pozíciu indexu prvku, ktorý sa má aktualizovať. Nový prvok bude priradený tomuto operátorovi.

Syntax:

Vektor [ index_position ] = Element

Zvážte vektor „študentské_značky“ s piatimi hodnotami. Aktualizujte prvky prítomné v indexoch 1 a 3.

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - študentské známky

vektor < int > študentské_známky { 98 , 78 , 90 , 67 , 89 } ;

cout << 'Existujúce značky: ' << endl ;

pre ( int itr : študentské_známky )

cout << itr << endl ;

// Aktualizácia prvku na indexe 3 na 100

študentské_známky [ 3 ] = 100 ;

// Aktualizácia prvku na indexe 1 na 60

študentské_známky [ 1 ] = 60 ;

cout << 'Konečné známky:' << endl ;

pre ( int itr : študentské_známky )

cout << itr << endl ;

}

Výkon:

Vidíme, že konečný vektor obsahuje aktualizačné prvky na indexoch 1 a 3.

2. Pomocou funkcie At().

Podobne ako operátor indexu, at() je v podstate členská funkcia, ktorá aktualizuje hodnotu na základe indexu v iterátore. Ak index špecifikovaný v tejto funkcii neexistuje, vyvolá sa výnimka „std::out_of_range“.

vektor. pri ( index_position ) = Element

Zvážte vektor „produktov“ s piatimi položkami. Aktualizujte všetky prvky prítomné vo vektore inými prvkami.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - produkty s 5 reťazcami

vektor < reťazec > Produkty { 'mydlo' , 'šampón' , 'olej' , 'ovocie' , 'zelenina' } ;

cout << 'Existujúce produkty:' << endl ;

pre ( reťazec itr : Produkty )

cout << itr << endl ;

//Aktualizácia všetkých reťazcov

Produkty. pri ( 0 ) = 'torta' ;

Produkty. pri ( 1 ) = 'čokoláda' ;

Produkty. pri ( 2 ) = 'ovocie' ;

Produkty. pri ( 3 ) = 'cibuľa' ;

Produkty. pri ( 4 ) = 'Nealko nápoje' ;



cout << ' \n Finálne produkty: ' << endl ;

pre ( reťazec itr : Produkty )

cout << itr << endl ;

}

Výkon:

Odstráňte konkrétny prvok z vektora

V C++ je std::vector::erase() funkcia sa používa na odstránenie konkrétneho prvku/rozsahu prvkov z vektora. Prvky sa odstránia na základe pozícií iterátora.

Syntax:

vektor. vymazať ( pozíciu iterátora )

Pozrime sa na syntax na odstránenie konkrétneho prvku z vektora. Môžeme použiť funkcie begin() alebo end() na získanie pozície prvku, ktorý sa nachádza vo vektore, ktorý sa má odstrániť.

Zvážte vektor „produktov“ s piatimi položkami.

  1. Odstráňte tretí prvok zadaním iterátora begin(). Begin() ukazuje na prvý prvok vo vektore. Ak k tejto funkcii pridáme dve, ukazuje to na tretí prvok.
  2. Odstráňte posledný prvok zadaním iterátora end(). End() ukazuje na posledný prvok vo vektore.
#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - produkty s 5 reťazcami

vektor < reťazec > Produkty { 'mydlo' , 'šampón' , 'olej' , 'ovocie' , 'zelenina' } ;

cout << 'Existujúce produkty:' << endl ;

pre ( reťazec itr : Produkty )

cout << itr << endl ;



// Odstráňte 3. prvok

Produkty. vymazať ( Produkty. začať ( ) + 2 ) ;

cout << ' \n Po odstránení tretieho prvku: \n ' ;

pre ( reťazec itr : Produkty )

cout << itr << endl ;

// Odstránenie posledného prvku

Produkty. vymazať ( Produkty. koniec ( ) ) ;

cout << ' \n Po odstránení posledného prvku: \n ' ;

pre ( reťazec itr : Produkty )

cout << itr << endl ;

}

Výkon:

Teraz existujú len tri prvky („mydlo“, „šampón“, „ovocie“), ktoré existujú vo vektore „produkty“.

Odstráňte všetky prvky z vektora

Scenár 1: Odstráňte rad prvkov z vektora

Použime funkciu std::vector::erase() na odstránenie viacerých prvkov v rozsahu.

Syntax:

vektor. vymazať ( iterátor prvý, iterátor posledný )

Dva iterátory (začiatok() ukazuje na prvý prvok a end() ukazuje na funkcie posledného prvku) sa používajú na určenie rozsahu.

Zvážte vektor „produktov“ s piatimi položkami a odstráňte všetky prvky z druhej pozície. Aby sme to dosiahli, prvý iterátor je začiatok (produkty)+1, ktorý ukazuje na druhý prvok, a druhý iterátor je koniec (produkty).

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - produkty s 5 reťazcami

vektor < reťazec > Produkty { 'mydlo' , 'šampón' , 'olej' , 'ovocie' , 'zelenina' } ;

cout << 'Existujúce produkty:' << endl ;

pre ( reťazec itr : Produkty )

cout << itr << endl ;



// Odstráňte všetky prvky z druhej pozície

Produkty. vymazať ( začať ( Produkty ) + 1 ,koniec ( Produkty ) ) ;

cout << ' \n Finálne produkty: \n ' ;

pre ( reťazec itr : Produkty )

cout << itr << endl ;

}

Výkon:

Teraz existuje iba jeden prvok („mydlo“), ktorý je prítomný vo vektore „produkty“.

Scenár 2: Odstráňte všetky prvky z vektora

Využime std::vector::clear() funkcia na odstránenie všetkých prvkov z vektora.

Syntax:

vektor. jasný ( )

Tejto funkcii sa neodovzdávajú žiadne parametre.

Zvážte rovnaký vektor, ktorý bol použitý v prvom scenári a odstráňte všetky prvky pomocou funkcie clear().

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - produkty s 5 reťazcami

vektor < reťazec > Produkty { 'mydlo' , 'šampón' , 'olej' , 'ovocie' , 'zelenina' } ;

cout << 'Existujúce produkty:' << endl ;

pre ( reťazec itr : Produkty )

cout << itr << endl ;



// Odstráňte všetky prvky z produktov

Produkty. jasný ( ) ;

cout << ' \n Finálne produkty: \n ' ;

pre ( reťazec itr : Produkty )

cout << itr << endl ;

}

Výkon:

Vidíme, že vo vektore „produkty“ nie sú žiadne prvky.

Únia vektorov

Operáciu UNION na vektoroch je možné vykonať pomocou funkcie std::set_union(). Union vráti jedinečné prvky z vektorov ignorovaním duplicitných prvkov. Tejto funkcii musíme odovzdať oba iterátory. Spolu s tým je potrebné odovzdať výstupný iterátor, ktorý ukladá výsledok vrátený oboma iterátormi.

Syntax:

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

Tu:

  1. „Prvý1“ ukazuje na prvý prvok prvého iterátora (vektor).
  2. „posledný1“ ukazuje na posledný prvok prvého iterátora (vektor).
  3. „Prvý2“ ukazuje na prvý prvok druhého iterátora (vektor).
  4. „Posledná2“ ukazuje na posledný prvok druhého iterátora (vektor).

Vytvorte dva vektory – „subjects1“ a „subjects2“ – typu integer.

  1. Zoraďte dva vektory pomocou funkcie sort() odovzdaním iterátorov.
  2. Vytvorte výstupný vektor (iterátor).
  3. Nájdite spojenie týchto dvoch vektorov pomocou funkcie std::set_union(). Ako prvý iterátor použite begin() a ako posledný iterátor end().
  4. Iterujte výstupný vektor, aby ste zobrazili prvky, ktoré funkcia vracia.
#include

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - značky1

vektor < int > známky1 = { 100 , 90 , 80 , 70 , 60 } ;



// Vytvorenie vektora - marks2

vektor < int > známky2 = { 80 , 90 , 60 , 70 , 100 } ;

// Zoradiť oba vektory

triediť ( známky1. začať ( ) , známky1. koniec ( ) ) ;

triediť ( známky2. začať ( ) , známky 2. koniec ( ) ) ;

vektor < int > outputVector ( známky1. veľkosť ( ) + známky2. veľkosť ( ) ) ;

vektor < int > :: iterátor je ;

i = set_union ( známky1. začať ( ) , známky1. koniec ( ) ,

známky2. začať ( ) ,známky2. koniec ( ) ,

outputVector. začať ( ) ) ;

cout << ' \n známky1 známky U2: \n ' ;

pre ( s = outputVector. začať ( ) ; s ! = i ; ++ s )

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

}

Výkon:

V oboch vektoroch (subjekty1 a subjekty2) je iba päť jedinečných prvkov.

Priesečník vektorov

Nájdenie priesečníka dvoch vektorov je možné pomocou funkcie std::set_intersection(). Priesečník vráti prvky, ktoré sú prítomné v oboch vektoroch.

Syntax:

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

Parametre, ktoré sú odovzdané funkcii set_union() môžu byť odovzdané aj tejto funkcii set_intersection().

Vytvorte dva vektory – „subjects1“ a „subjects2“ – typu integer.

  1. Zoraďte dva vektory pomocou funkcie sort() odovzdaním iterátorov.
  2. Vytvorte výstupný vektor (iterátor).
  3. Nájdite priesečník týchto dvoch vektorov pomocou funkcie std::set_intersection(). Ako prvý iterátor použite begin() a ako posledný iterátor end().
  4. Iterujte výstupný vektor, aby ste zobrazili prvky, ktoré funkcia vracia.
#include

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - značky1

vektor < int > známky1 = { 100 , 10 , 80 , 40 , 60 } ;



// Vytvorenie vektora - marks2

vektor < int > známky2 = { päťdesiat , 90 , 60 , 10 , 100 } ;

// Zoradiť oba vektory

triediť ( známky1. začať ( ) , známky1. koniec ( ) ) ;

triediť ( známky2. začať ( ) , známky 2. koniec ( ) ) ;

vektor < int > outputVector ( známky1. veľkosť ( ) + známky2. veľkosť ( ) ) ;

vektor < int > :: iterátor je ;

i = set_intersection ( známky1. začať ( ) , známky1. koniec ( ) ,

známky2. začať ( ) ,známky2. koniec ( ) ,

outputVector. začať ( ) ) ;

cout << ' \n známky1 ∩ známky2: \n ' ;

pre ( s = outputVector. začať ( ) ; s ! = i ; ++ s )

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

}

Výkon:

V oboch vektoroch (subjekty 1 a subjekty 2) sú prítomné iba tri prvky.

Skontrolujte, či je vektor prázdny alebo nie

Pred prácou na vektoroch je dôležité skontrolovať, či je vektor prázdny alebo nie. V softvérových projektoch je tiež dobrou praxou skontrolovať, či je vektor prázdny alebo nie pred vykonaním operácií, ako sú operácie CRUD atď.

1. Použitie Std::vector::empty()

Táto funkcia vráti 1, ak je vektor prázdny (neobsahuje žiadny prvok). V opačnom prípade sa vráti 0. Do tejto funkcie sa neodovzdáva žiadny parameter.

2. Pomocou Std::vector::size()

Funkcia std::vector::size() vracia celé číslo, ktoré predstavuje celkový počet prvkov prítomných vo vektore.

Vytvorte dva vektory – „college1“ a „college2“. „College1“ obsahuje päť prvkov a „college2“ je prázdny. Aplikujte obe funkcie na oba vektory a skontrolujte výstup.

#include

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - vysoká škola1

vektor < reťazec > vysoká škola1 = { 'vysoká škola-A' , 'vysoká škola-B' , 'vysoká škola-C' , 'vysoká škola-D' , 'vysoká škola-E' } ;

// Vytvorenie vektora - vysoká škola2

vektor < reťazec > vysoká škola2 ;

// prázdne ()

cout << vysoká škola1. prázdny ( ) << endl ;

cout << vysoká škola2. prázdny ( ) << endl ;

// veľkosť()

cout << vysoká škola1. veľkosť ( ) << endl ;

cout << vysoká škola2. veľkosť ( ) << endl ;

}

Výkon:

Funkcia empty() vráti 0 pre „college1“ a 1 pre „college2“. Funkcia size() vráti päť pre „college1“ a 0 pre „college2“.

Prejdite vektorom pomocou Const_Iterator

Keď pracujete na kontajneroch C++, ako sú množiny, vektory atď., je možné iterovať cez všetky prvky, ktoré sú prítomné v kontajneri, bez toho, aby ste ich upravovali. The const_iterator je jedným z iterátorov, ktoré dosahujú tento scenár. cbegin() (ukazuje na prvý prvok vo vektore) a cend() (ukazuje na posledný prvok vo vektore) sú dve funkcie poskytované každým kontajnerom, ktorý sa používa na vrátenie konštantného iterátora na začiatok a koniec nádobe. Pri iterácii vektora môžeme využiť tieto dve funkcie.

  1. Vytvorme vektor s názvom „oddelenia“ s piatimi reťazcami.
  2. Deklarujte const_iterator – ctr typu .
  3. Iterujte cez oddelenia pomocou predchádzajúceho iterátora pomocou cyklu „for“ a zobrazte ho.
#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - oddelenia

vektor < reťazec > oddelenia = { 'predaj' , 'servis' ,

'HR' , 'IT' , 'iní' } ;



vektor < reťazec > :: const_iterator ctr ;

// Iterácia cez oddelenia pomocou const_iterator - ctr.

pre ( ctr = oddelenia. cbegin ( ) ; ctr ! = oddelenia. zopár ( ) ; ctr ++ ) {

cout << * ctr << endl ;

}

}

Výkon:

Prejdite vektorom pomocou Reverse_Iterator

The reverzný_iterátor je tiež iterátor, ktorý je podobný const_iterator, ale vracia prvky opačne. Rbegin() (ukazuje na posledný prvok vo vektore) a rend() (ukazuje na prvý prvok vo vektore) sú dve funkcie poskytované každým kontajnerom, ktorý sa používa na vrátenie konštantného iterátora na koniec a začiatok nádobe.

  1. Vytvorme vektor s názvom „oddelenia“ s piatimi reťazcami.
  2. Deklarujte reverzný_iterátor – rtr typu .
  3. Iterujte cez oddelenia pomocou predchádzajúceho iterátora pomocou cyklu „for“ a zobrazte ho.
#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - oddelenia

vektor < reťazec > oddelenia = { 'predaj' , 'servis' ,

'HR' , 'IT' , 'iní' } ;



vektor < reťazec > :: reverzný_iterátor rtr ;

// Iterácia cez oddelenia pomocou reverse_iterator - rtr.

pre ( rtr = oddelenia. začať ( ) ; rtr ! = oddelenia. robí ( ) ; rtr ++ ) {

cout << * rtr << endl ;

}

}

Výkon:

Zatlačte prvky do vektora

Vloženie alebo pripojenie prvkov do vektora je jednosmerné vloženie, ktoré možno vykonať pomocou vector::push_back() funkciu.

Syntax:

vektor. push_back ( element )

Ako parameter je potrebný prvok, ktorý sa má vložiť do vektora.

Vytvorme prázdny vektor s názvom „departments“ s piatimi reťazcami a pomocou funkcie push_back() vložíme dva reťazce jeden po druhom.

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Inicializuje vektor - oddelenia

vektor < reťazec > oddelenia ;

cout << 'Skutočné oddelenia:' << endl ;

pre ( auto itr = oddelenia. začať ( ) ; itr ! = oddelenia. koniec ( ) ; ++ itr )

cout << * itr << endl ;

// Stlačte 'Predaj'

oddelenia. push_back ( 'predaj' ) ;

// Potlač to'

oddelenia. push_back ( 'IT' ) ;

cout << ' \n Konečné oddelenia:' << endl ;

pre ( auto itr = oddelenia. začať ( ) ; itr ! = oddelenia. koniec ( ) ; ++ itr )

cout << * itr << endl ;

}

Výkon:

Najprv stlačíme „Predaj“. Potom sa „IT“ vloží do vektora. Teraz vektor „oddelenia“ obsahuje dva prvky.

Vyberte prvky z vektora

Ak chcete odstrániť poslednú položku, ktorá je prítomná vo vektore, pomocou vector::pop_back() funkcia je najlepší prístup. Vymaže posledný prvok, ktorý je prítomný vo vektore.

Syntax:

vektor. pop_back ( )

Pre túto funkciu nie je potrebný žiadny parameter. Ukazuje nedefinované správanie, ak sa pokúsime odstrániť posledný prvok z prázdneho vektora.

Vytvorme prázdny vektor s názvom „oddelenia“ s piatimi reťazcami a pomocou predchádzajúcej funkcie vymažeme posledný prvok. Zobrazte vektor v oboch prípadoch.

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Inicializuje vektor - oddelenia

vektor < reťazec > oddelenia = { 'predaj' , 'IT' , 'servis' , 'marketing' , 'HR' } ;

cout << 'Skutočné oddelenia:' << endl ;

pre ( auto itr = oddelenia. začať ( ) ; itr ! = oddelenia. koniec ( ) ; ++ itr )

cout << * itr << endl ;



// Odstrániť posledný prvok

oddelenia. pop_back ( ) ;

cout << ' \n Konečné oddelenia:' << endl ;

pre ( auto itr = oddelenia. začať ( ) ; itr ! = oddelenia. koniec ( ) ; ++ itr )

cout << * itr << endl ;

}

Výkon:

„HR“ je posledný prvok, ktorý je prítomný vo vektore „oddelenia“. Takže je odstránený z vektora a konečný vektor obsahuje „Predaj“, „IT“, „Služba“ a „Marketing“.

Vymeňte vektory

The vector::swap() funkcia v C++ STL sa používa na výmenu všetkých prvkov, ktoré sú prítomné v dvoch vektoroch.

Syntax:

prvý_vektor. vymeniť ( druhý_vektor )

Neberie do úvahy veľkosť vektorov, ale vektory by mali byť rovnakého typu (ak sú rôzne typy vektorov, dôjde k chybe).

Vytvorme dva vektory – „ovocie“ a „zeleninu“ – typu reťazec s rôznymi veľkosťami. Zameňte každý z nich a zobrazte vektory v oboch prípadoch.

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Inicializuje vektor - ovocie

vektor < reťazec > ovocie = { 'jablko' , 'Mango' } ;

cout << 'Skutočné ovocie:' << endl ;

pre ( auto itr = ovocie. začať ( ) ; itr ! = ovocie. koniec ( ) ; ++ itr )

cout << * itr << endl ;



// Inicializácia vektora - zelenina

vektor < reťazec > zeleniny = { 'Zemiak' , 'Paradajka' , 'Brinjal' } ;

cout << ' \n Skutočná zelenina:' << endl ;

pre ( auto itr = zeleniny. začať ( ) ; itr ! = zeleniny. koniec ( ) ; ++ itr )

cout << * itr << endl ;



// Zameňte prvky v oboch vektoroch

ovocie. vymeniť ( zeleniny ) ;

cout << ' \n Ovocie po výmene:' << endl ;

pre ( auto itr = ovocie. začať ( ) ; itr ! = ovocie. koniec ( ) ; ++ itr )

cout << * itr << endl ;

cout << ' \n Zelenina po výmene:' << endl ;

pre ( auto itr = zeleniny. začať ( ) ; itr ! = zeleniny. koniec ( ) ; ++ itr )

cout << * itr << endl ;

}

Výkon:

Predtým vektor „ovocie“ obsahuje dva prvky a vektor „zelenina“ obsahuje tri prvky. Po výmene obsahuje vektor „ovocie“ tri prvky a vektor „zelenina“ dva prvky.

Získajte prvý prvok z vektora

V niektorých prípadoch je požiadavka vrátiť iba prvý prvok z vektora. Funkcia vector::front() v C++ STL načíta iba prvý prvok z vektora.

Syntax:

vektor. vpredu ( )

Táto funkcia nebude mať žiadny parameter. Ak je vektor prázdny, vyvolá sa chyba.

Vytvorme dva vektory – „ovocie“ a „zeleninu“ – typu reťazec a pokúsime sa získať prvý prvok oddelene od týchto dvoch vektorov.

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorte vektor - ovocie s 2 prvkami

vektor < reťazec > ovocie = { 'jablko' , 'Mango' } ;

// Vráti prvý prvok

cout << ovocie. vpredu ( ) << endl ;



// Inicializácia vektora - zelenina

vektor < reťazec > zeleniny ;

// Skúste vrátiť prvý prvok

cout << zeleniny. vpredu ( ) ;

}

Výkon:

„Jablko“ je prvým prvkom, ktorý je prítomný vo vektore „ovocie“. Takže je to vrátené. Ale pri pokuse o získanie prvého prvku z vektora „zelenina“ dôjde k chybe, pretože je prázdny.

Získajte posledný prvok z vektora

Funkcia vector::end() v C++ STL načíta iba posledný prvok z vektora.

Syntax:

vektor. späť ( )

Táto funkcia nebude mať žiadny parameter. Ak je vektor prázdny, vyvolá sa chyba.

Vytvorme dva vektory – „ovocie“ a „zeleninu“ – typu reťazec a pokúsime sa získať posledný prvok oddelene od týchto dvoch vektorov.

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorte vektor - ovocie s 2 prvkami

vektor < reťazec > ovocie = { 'jablko' , 'Mango' } ;

// Získanie posledného prvku

cout << ovocie. späť ( ) << endl ;



// Inicializácia vektora - zelenina

vektor < reťazec > zeleniny ;

// Pokúste sa získať posledný prvok

cout << zeleniny. späť ( ) ;

}

Výkon:

„Mango“ je posledný prvok, ktorý je prítomný vo vektore „ovocie“. Takže je to vrátené. Pri pokuse o získanie posledného prvku z vektora „vegetables“ sa však zobrazí chyba, pretože je prázdny.

Priraďte nové hodnoty k vektoru

V niektorých scenároch, ak chcete aktualizovať všetky hodnoty novou hodnotou alebo vytvoriť vektor s rovnakými hodnotami, je najlepším prístupom použitie funkcie vector::assign(). Pomocou tejto funkcie môžeme:

  1. Vytvorte vektor so všetkými podobnými prvkami
  2. Upravte existujúci vektor rovnakým prvkom

Syntax:

vektor. priradiť ( veľkosť, hodnota )

Pre túto funkciu sú potrebné dva parametre.

Tu:

  1. Veľkosť určuje počet prvkov, ktoré sa majú priradiť.
  2. Hodnota určuje prvok, ktorý sa má priradiť.

Vytvorme vektor s názvom „marks1“ s piatimi hodnotami a aktualizujeme tento vektor štyrmi prvkami tak, aby sa všetky prvky v aktualizovanom vektore rovnali 20.

#include

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - značky1

vektor < int > známky1 = { 100 , 90 , 80 , 70 , 60 } ;

cout << 'Skutočný vektor:' << endl ;

pre ( int i = 0 ; i < známky1. veľkosť ( ) ; i ++ )

cout << známky1 [ i ] << endl ;



známky1. priradiť ( 4 , dvadsať ) ;



cout << ' \n Aktualizovaný vektor:' << endl ;

pre ( int i = 0 ; i < známky1. veľkosť ( ) ; i ++ )

cout << známky1 [ i ] << endl ;

}

Výkon:

Predtým vektor obsahuje päť rôznych prvkov. Teraz obsahuje iba štyri prvky a všetky sa rovnajú 20.

Rozšírte vektor pomocou Emplace()

Už vieme, že nové prvky sa dynamicky vkladajú na ľubovoľnú pozíciu vo vektore. Je to možné pomocou funkcie vector::emplace(). Poďme sa rýchlo pozrieť na syntax a parametre akceptované touto funkciou.

Syntax:

vektor. umiestnenie ( const_iterator position, element )

Tejto funkcii sú odovzdané dva povinné parametre.

Tu:

  1. Prvý parameter zaujme pozíciu, aby sme mohli vložiť prvok na ľubovoľnú pozíciu. Pozíciu môžeme získať pomocou funkcie iterátora begin() alebo end().
  2. Druhým parametrom je prvok, ktorý sa má vložiť do vektora.

Zvážte vektor „chemikálie“ s dvoma prvkami.

  1. Vložte „Mangán“ na prvé miesto – začiatok (chemikálie)
  2. Vložte „Meď“ na poslednú pozíciu – koniec (chemikálie)
  3. Na tretiu pozíciu vložte „Sulphur“ – začiatok (chemikálie)+2
#include

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - chemikálie

vektor < reťazec > chemikálie = { 'kyslík' , 'CO' } ;

cout << 'Skutočné chemikálie:' << endl ;

pre ( int i = 0 ; i < chemikálie. veľkosť ( ) ; i ++ )

cout << chemikálie [ i ] << endl ;



// Vložiť prvok na prvé miesto

chemikálie. umiestnenie ( začať ( chemikálie ) , 'mangán' ) ;



// Vložiť prvok na poslednú pozíciu

chemikálie. umiestnenie ( koniec ( chemikálie ) , 'meď' ) ;



// Vložiť prvok na tretie miesto

chemikálie. umiestnenie ( začať ( chemikálie ) + 2 , 'síra' ) ;



cout << ' \n Konečné chemikálie:' << endl ;

pre ( int i = 0 ; i < chemikálie. veľkosť ( ) ; i ++ )

cout << chemikálie [ i ] << endl ;

}

Výkon:

Teraz konečný vektor obsahuje päť prvkov (uvedených na nasledujúcej snímke obrazovky).

Rozšírte vektor pomocou Emplace_Back()

Element možno pripojiť (pridať na koniec vektora), čo sa dá urobiť pomocou vector::emplace_back() funkciu.

Syntax:

vektor. emplace_back ( element )

Prvok, ktorý sa má pripojiť k vektoru, je povinné odovzdať ako parameter.

Pridajme dva prvky jeden po druhom pomocou funkcie emplace_back().

#include

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - chemikálie

vektor < reťazec > chemikálie = { 'kyslík' , 'CO' } ;

cout << 'Skutočné chemikálie:' << endl ;

pre ( int i = 0 ; i < chemikálie. veľkosť ( ) ; i ++ )

cout << chemikálie [ i ] << endl ;



// Vložte mangán na koniec vektora

chemikálie. emplace_back ( 'mangán' ) ;



// Vložte mangán na koniec vektora

chemikálie. emplace_back ( 'meď' ) ;





cout << ' \n Konečné chemikálie:' << endl ;

pre ( int i = 0 ; i < chemikálie. veľkosť ( ) ; i ++ )

cout << chemikálie [ i ] << endl ;

}

Výkon:

Teraz konečný vektor obsahuje štyri prvky po pridaní „Mangánu“ a „Meď“.

Maximálny prvok vektora

  1. Vytvorte vektor s niektorými prvkami.
  2. Ak chcete nájsť maximálny prvok, ktorý je prítomný vo vektore, použite funkciu *max_element(), ktorá akceptuje dva iterátory ako argumenty. Tieto dva parametre fungujú ako rozsah a maximálny prvok sa vráti v rámci poskytnutého rozsahu. Počiatočná pozícia je begin() a posledná pozícia je end().
* max_element ( first_Index, last_Index )

Zoberme si vektor s názvom „item_costs“, ktorý obsahuje päť celočíselných hodnôt a vráti maximálny prvok.

#include

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - item_costs

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



cout << 'Náklady na položky: \n ' ;

pre ( int i = 0 ; i < item_costs. veľkosť ( ) ; i ++ )

cout << item_costs [ i ] << endl ;



// Vráti maximálny prvok z vyššie uvedeného vektora - item_costs

cout << ' \n Maximálna cena: ' << * max_element ( začať ( item_costs ) ,koniec ( item_costs ) ) ;

}

Výkon:

Tu je 8900 maximálny prvok spomedzi všetkých prvkov, ktoré sú prítomné vo vektore „item_costs“.

Minimálny prvok vektora

  1. Vytvorte vektor s niektorými prvkami.
  2. Ak chcete nájsť minimálny prvok, ktorý je prítomný vo vektore, použite funkciu *min_element(), ktorá akceptuje dva iterátory ako argumenty. Tieto dva parametre fungujú ako rozsah a minimálny prvok (menej ako všetky ostatné prvky) sa vráti v rámci poskytnutého rozsahu. Počiatočná pozícia je begin() a posledná pozícia je end().
* min_element ( first_Index, last_Index )

Využite rovnaký vektor, ktorý je vytvorený, na nájdenie maximálneho prvku a nájdite minimálny prvok pomocou funkcie *min_element().

#include

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - item_costs

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



cout << 'Náklady na položky: \n ' ;

pre ( int i = 0 ; i < item_costs. veľkosť ( ) ; i ++ )

cout << item_costs [ i ] << endl ;



// Vráti minimálny prvok z vyššie uvedeného vektora - item_costs

cout << ' \n Minimálna cena: ' << * min_element ( začať ( item_costs ) ,koniec ( item_costs ) ) ;

}

Výkon:

Tu je 200 minimálny prvok spomedzi všetkých prvkov, ktoré sú prítomné vo vektore „item_costs“.

Súčet prvkov vo vektore

Ak chcete vrátiť súčet všetkých prvkov prítomných vo vektore, hromadiť () sa používa funkcia v C++ STL. Akceptuje tri parametre. Prvý parameter preberá prvý index, ktorý predstavuje počiatočný prvok v rozsahu (špecifikujte iterátor begin()) a druhý parameter preberá posledný index, ktorý predstavuje koncový prvok v rozsahu (špecifikujte iterátor end()) . Nakoniec musíme odovzdať počiatočnú hodnotu súčtu (v našom prípade je to 0).

hromadiť ( first_index, last_index, initial_val ) ;

Vytvorte vektor s názvom „item_costs“ s piatimi prvkami typu celé číslo a vypočítajte súčet.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - item_costs

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



cout << 'Náklady na položky: \n ' ;

pre ( int i = 0 ; i < item_costs. veľkosť ( ) ; i ++ )

cout << item_costs [ i ] << endl ;



// Vráti súčet všetkých prvkov vo vyššie uvedenom vektore - item_costs

cout << ' \n Celkové náklady: ' << hromadiť ( začať ( item_costs ) ,koniec ( item_costs ) , 0 ) ;

}

Výkon:

Súčet 8900, 5677, 200, 1000, 2300 je 18077.

Elementárne násobenie dvoch vektorov

  1. Vytvorte dva vektory typu numeric a dva vektory musia mať rovnakú veľkosť (celkový počet prvkov prítomných v prvom vektore = celkový počet prvkov prítomných v druhom vektore).
  2. Vyhláste nový vektor a použite pre slučku , vykonajte operáciu násobenia na dvoch prvkoch v každej iterácii a uložte hodnotu do vytvoreného vektora pomocou funkcie push_back().
  3. pre ( int itr = 0 ; i < first_vec. veľkosť ( ) ; itr ++ )

    {

    vektor_výsledku. push_back ( first_vec [ itr ] * sec_vec [ itr ] ) ;

    }
  4. Zobrazte prvky, ktoré sú prítomné vo výslednom vektore jeho opakovaním.

Vytvorte vektor s názvom „item_costs“ s piatimi prvkami typu celé číslo a vypočítajte súčet.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorte dva vektory - produkty1 a produkty2, každý s 5 prvkami

vektor < int > produkty1 = { 10 , dvadsať , 30 , 40 , päťdesiat } ;

vektor < int > produkty2 = { päťdesiat , 40 , 30 , 70 , 60 } ;



vektor < int > vysledkove_produkty ;



// Vykonajte násobenie po prvkoch

pre ( int i = 0 ; i < produkty1. veľkosť ( ) ; i ++ ) {

vysledkove_produkty. push_back ( produkty1 [ i ] * produkty2 [ i ] ) ;

}



// Zobrazí výsledný vektor

cout << 'Vektorové násobenie: \n ' ;

pre ( int res : vysledkove_produkty )

cout << res << endl ;

}

Výkon:

Iterácia - 1 : 10 * päťdesiat => 500

Iterácia - 2 : dvadsať * 40 => 800

Iterácia - 3 : 30 * 30 => 900

Iterácia - 4 : 40 * 70 => 2800

Iterácia - 5 : päťdesiat * 60 => 3000

Bodový súčin dvoch vektorov

V prípade C++ vektorov je bodový súčin definovaný ako „súčet súčinov zodpovedajúcich položiek dvoch sekvencií vektorov“.

Syntax:

vnútorný_produkt ( Vector1 first, Vector1 last, Vector2 first, Initial_Val )

Na vrátenie bodového súčinu použite funkciu inner_product(). Táto funkcia má štyri požadované parametre.

Tu:

  1. Prvý parameter odkazuje na iterátor, ktorý ukazuje na začiatok prvého vektora (špecifikujte pomocou funkcie begin()).
  2. Druhý parameter odkazuje na iterátor, ktorý ukazuje na koniec prvého vektora (špecifikujte pomocou funkcie end()).
  3. Tretí parameter odkazuje na iterátor, ktorý ukazuje na začiatok druhého vektora (špecifikujte pomocou funkcie begin()).
  4. Počiatočná hodnota musí byť odovzdaná ako posledný parameter, ktorým je celé číslo pre akumuláciu bodového súčinu.

Použite rovnaký program, ktorý je vytvorený na násobenie dvoch vektorov, a pomocou funkcie innsr_product() nájdite bodový súčin týchto dvoch vektorov.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorte dva vektory - produkty1 a produkty2, každý s 5 prvkami

vektor < int > produkty1 = { 10 , dvadsať , 30 , 40 , päťdesiat } ;

vektor < int > produkty2 = { päťdesiat , 40 , 30 , 70 , 60 } ;



// Zobrazí výsledný vektor

cout << 'Bodový produkt produktov1 a produktov2: ' ;

cout << vnútorný_produkt ( začať ( produkty1 ) ,koniec ( produkty1 ) ,začať ( produkty2 ) , 0 ) ;

}

Výkon:

( 10 * päťdesiat ) + ( dvadsať * 40 ) + ( 30 * 30 ) + ( 40 * 70 ) + ( päťdesiat * 60 )

=> 500 + 800 + 900 + 2800 + 3000

=> 8000

Previesť sadu na vektor

Existuje mnoho spôsobov, ako previesť množinu na vektor tým, že všetky prvky, ktoré sú v množine vyvýšené, prenesiete do vektora. Najlepším a najjednoduchším spôsobom je použitie funkcie std::copy().

Syntax

std :: kopírovať ( sourceIterator prvý, sourceIterator posledný, destinationIterator prvý )

Použi std::copy() funkcia, ktorá vkladá prvky z množiny do vektora. Chce to tri parametre.

Tu:

  1. Prvý parameter odkazuje na zdrojový iterátor, ktorý ukazuje na prvý prvok v iterátore. Tu je set iterátor zdroja, ktorý je zadaný pomocou funkcie begin().
  2. Podobne druhý parameter ukazuje na posledný prvok (funkcia end()).
  3. Tretí parameter odkazuje na cieľový iterátor, ktorý ukazuje na prvý prvok (špecifikovaný pomocou funkcie begin()) v iterátore.

Vytvorme množinu s piatimi študentmi a pomocou predchádzajúcej funkcie skopírujeme všetky prvky do vektora.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorte množinu - študentov s 5 prvkami

nastaviť < reťazec > študentov = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' } ;

cout << 'Nastaviť: \n ' ;

pre ( reťazec i : študentov )

cout << i << endl ;



// Vytvorenie vektora - veľkosť student_vcof sa rovná veľkosti množiny

vektor < reťazec > študent_vc ( študentov. veľkosť ( ) ) ;



// Vložte prvky zo sady - students do vektora - student_vc.

kopírovať ( študentov. začať ( ) , študenti. koniec ( ) , študent_vc. začať ( ) ) ;



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

pre ( reťazec i : študent_vc )

cout << i << endl ;

}

Výkon:

Teraz sa všetky prvky nachádzajúce sa v sade „Students“ skopírujú do vektora „students_vc“.

Odstráňte duplicitné prvky

  1. Najprv musíme zoradiť prvky vo vektore tak, aby všetky duplicitné prvky spolu susedili pomocou std::sort() funkciu.
  2. std :: triediť ( Prvý vektor, posledný vektor ) ;
  3. Použite funkciu std::unique(), aby ste vybrali duplicitné prvky. Zároveň použite funkciu erase() na odstránenie duplikátov, ktoré vracia funkcia std::unique(). Poradie prvkov sa môže v konečnom vektore zmeniť.
  4. vektor. vymazať ( std :: jedinečný ( Prvý vektor, posledný vektor ) , Vektor posledný ) )

Vytvorte „študentský“ vektor s 10 prvkami a vráťte vektor odstránením duplikátov.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorte vektor - študenti s 10 prvkami

vektor < reťazec > študentov = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' ,

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

cout << 'Študenti: \n ' ;

pre ( reťazec i : študentov )

cout << i << '' ;



// Zoraď všetky prvky vo vektore študentov.

triediť ( začať ( študentov ) , koniec ( študentov ) ) ;



// Použite funkciu unique() na odstránenie duplikátov pomocou funkcie erase().

študentov. vymazať ( jedinečný ( začať ( študentov ) , koniec ( študentov ) ) , koniec ( študentov ) ) ;



cout << ' \n \n Jedineční študenti: \n ' ;

pre ( auto itr = cbegin ( študentov ) ; itr ! = zopár ( študentov ) ; ++ itr ) {

cout << * itr << '' ;

}

}

Výkon:

Teraz sú všetky prvky vo vektore jedinečné.

Previesť vektor na množinu

Sada nepovoľuje duplicitné prvky. Ak píšete na vloženie vektora do množiny s duplikátmi, budú sa ignorovať. Používame rovnakú funkciu std::copy(), ktorá bola použitá v predchádzajúcom scenári, ktorý konvertoval množinu na vektor.

V tomto scenári:

  1. Prvý parameter berie vektor ako zdrojový iterátor, ktorý je špecifikovaný pomocou funkcie begin().
  2. Druhý parameter berie vektor ako zdrojový iterátor, ktorý je špecifikovaný pomocou funkcie end().
  3. Odovzdajte funkciu std::inserter(), ktorá sa používa na automatické prepísanie/kopírovanie prvkov na konkrétnu pozíciu v množine poskytnutím množiny a iterátora, ktoré ukazujú na koniec množiny ako parametre.

Vytvorme vektor s 10 celými číslami a skopírujeme prvky do množiny.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie sady - značiek s 10 hodnotami

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

cout << 'Vektor: \n ' ;

pre ( int i : známky )

cout << i << '' ;



// Create Set - marks_set s veľkosťou rovnajúcou sa veľkosti vektora

nastaviť < int > marks_set ;



// Vložte prvky zo sady - students do vektora - student_vc.

kopírovať ( začať ( známky ) ,koniec ( známky ) , vkladač ( marks_set,end ( marks_set ) ) ) ;



cout << ' \n \n Nastaviť: \n ' ;

pre ( int i : marks_set )

cout << i << '' ;

}

Výkon:

Existujúci vektor s názvom „marks“ má 10 hodnôt. Po skopírovaní do sady „marks_set“ obsahuje iba šesť prvkov, pretože ostatné štyri prvky sú duplikované.

Odstráňte prázdne struny

Nepoužívajú sa prázdne reťazce, ktoré sú prítomné vo vektore. Je dobrým zvykom odstrániť prázdne reťazce, ktoré sú prítomné vo vektore. Pozrime sa, ako odstrániť prázdne reťazce z vektora C++:

  1. Iterujte vektor pomocou cyklu „for“.
  2. V každej iterácii skontrolujte, či je prvok prázdny (“”) alebo či nie je použitý operátor “==” s členskou funkciou at().
  3. Pomocou funkcie std::erase() odstráňte prázdne reťazce po kontrole predchádzajúcej podmienky.
  4. Opakujte krok 2 a krok 3 až do konca vektora.

Vytvorme vektor „spoločnosti“ s 10 reťazcami. Medzi nimi je päť prázdnych a odstránime ich implementáciou predchádzajúceho prístupu.

#include

#include

použitím menný priestor std ;

Hlavná ( ) {



vektor < reťazec > spoločnosti { 'Spoločnosť-A' , '' , 'Spoločnosť-B' ,

'' , 'Spoločnosť-C' , '' , 'Spoločnosť-D' , '' , '' , '' } ;



// Iterujte cez spoločnosti

// a odstráňte prázdne prvky pomocou erase()

pre ( int itr = 1 ; itr < spoločnosti. veľkosť ( ) ; ++ itr ) {

ak ( spoločnosti. pri ( itr ) == '' ) {

spoločnosti. vymazať ( spoločnosti. začať ( ) + itr ) ;

-- itr ;

}
}

// Zobrazenie vektora


pre ( auto & i : spoločnosti ) {

cout << i << endl ;

}

}

Výkon:

Teraz vektor „spoločnosti“ obsahuje neprázdne reťazce.

Napíšte vektor do textového súboru

Poďme diskutovať o tom, ako zapísať všetky prvky, ktoré sú prítomné vo vektore, do súboru pomocou vektorových indexov pomocou fstream .

  1. Po inicializácii vektora do nej vtlačte niektoré prvky pomocou funkcie push_back.
  2. Použite funkciu open() z knižnice „fstream“ s režimom ako out.
  3. Prejdite každý prvok prítomný vo vektore pomocou indexov v slučke „for“ a zapíšte každý prvok do poskytnutého súboru.
  4. Nakoniec súbor zatvorte.

Implementujme predchádzajúci prístup spustením kódu C++.

#include

#include

#include

#include

použitím menný priestor std ;

Hlavná ( )

{

// Vytvorenie vektora - v_data

// a vtlačíme do nej dva prvky.

vektor < reťazec > v_data ;

v_data. push_back ( 'Vitajte' ) ;

v_data. push_back ( 'na LinuxHint' ) ;

prúd f ;



// Otvorte súbor

f. OTVORENÉ ( 'written_file.txt' ,ios_base :: von ) ;

// Opakujte každý prvok vektora a zapíšte do súboru jeden po druhom.

pre ( int i = 0 ; i < v_data. veľkosť ( ) ; i ++ )

{

f << v_data [ i ] << endl ;

}

// Zatvorte súbor

f. Zavrieť ( ) ;

}

Výkon:

Vektor „v_data“ obsahuje dva prvky a súbor sa vytvorí v ceste, kde sa vykoná program s prvkami, ktoré sú prítomné vo vektore.

Vytvorte vektor z textového súboru

Naučili sme sa zapisovať prvky, ktoré sú prítomné vo vektore, do textového súboru. Tu vytvoríme vektor z obsahu, ktorý sa nachádza v textovom súbore.

  1. Vytvorte „ ifstream“ premenná, ktorá slúži na čítanie informácií z textového súboru, v ktorom vytvárame vektor zo súboru.
  2. Vytvorte prázdny vektor na uloženie obsahu súboru a použite prázdnu reťazcovú premennú ako príznak na kontrolu konca súboru.
  3. Prečítajte si ďalší riadok zo súboru, kým nedosiahne koniec (v podstate pomocou cyklu „while“). Pomocou funkcie push_back() si prečítajte nasledujúci riadok a vložte ho do vektora.
  4. Zobrazte riadok, ktorý je prítomný v riadku, oddelene, aby ste videli prvky, ktoré sú prítomné vo vektore na konzole.

Implementujme predchádzajúci prístup spustením kódu C++. Pozrime sa na súbor „data.txt“ s nasledujúcim obsahom. Tu je názov vektora „v_data“.

#include

použitím menný priestor std ;

Hlavná ( )

{

// Otvorte textový súbor - data
ifstream súbor ( 'data.txt' ) ;

// Vytvorenie vektora - v_data typu - string


vektor < reťazec > v_data ;

tangá boli ;

// Prečítajte si ďalší riadok z data.txt
// kým nedosiahne koniec.


zatiaľ čo ( súbor >> bol ) {

// Prečítajte si ďalší riadok a vložte ho do súboru v_data

v_data. push_back ( bol ) ;

}



// Zobrazí riadok prítomný v riadku samostatne.

kopírovať ( v_data. začať ( ) , v_data. koniec ( ) , ostream_iterator < reťazec > ( cout , ' \n ' ) ) ;

}

Výkon:

Vidíme, že „v_data“ obsahuje päť prvkov, ktoré pochádzajú zo súboru.

Záver

V tomto dlhom článku sme preskúmali všetky možné príklady, ktoré sa používajú v aplikáciách v reálnom čase súvisiacich s vektormi v programovacom jazyku C++. Každý príklad je vysvetlený syntaxou, parametrami a príkladom s výstupom. V každom kóde sú pridané komentáre, aby ste získali jasné pochopenie kódu.