30 C++ vektorite näiteid

30 C Vektorite Naiteid



C++ keeles on Vector ühemõõtmeline andmestruktuur, mis dünaamiliselt suureneb vastavalt vajadusele. Andmete organiseerimine (sisestamine/muutmine/kustutamine) saab selles andmestruktuuris tõhusalt teostatav. Selle rakendused hõlmavad järgmist:

  1. Matemaatiliste vektorite kujutamine teadus- ja tehnikarakendustes
  2. Seda andmestruktuuri kasutades saab realiseerida järjekordi, virnasid jne.

Enamikku selle andmestruktuuriga seotud tavalisi CRUD-i toiminguid ja funktsioone käsitletakse üksikasjalikult stsenaariumipõhiselt koos süntaksi ja koodijuppidega.







Sisu teema:

  1. Sisestage element vektorisse
  2. Sisestage vektorisse mitu elementi
  3. Juurdepääs elementidele vektorist
  4. Värskendage elementi vektoris
  5. Konkreetse elemendi eemaldamine vektorist
  6. Eemaldage vektorist kõik elemendid
  7. Vektorite Liit
  8. Vektorite ristumiskoht
  9. Kontrollige, kas vektor on tühi või mitte
  10. Vektori läbimine Const_Iteratori abil
  11. Vektori läbimine Reverse_Iteratori abil
  12. Lükake elemendid vektorisse
  13. Popige elemendid vektorist
  14. Vahetage vektorid
  15. Tõmba esimene element vektorist
  16. Tõmba viimane element vektorist
  17. Määrake vektorile uued väärtused
  18. Laiendage vektorit Emplace() abil
  19. Laiendage vektorit kasutades Emplace_Back()
  20. Vektori maksimaalne element
  21. Vektori minimaalne element
  22. Elementide summa vektoris
  23. Kahe vektori elemendipõhine korrutamine
  24. Kahe vektori punktkorrutis
  25. Teisendage komplekt vektoriks
  26. Eemaldage dubleerivad elemendid
  27. Teisendage vektor komplektiks
  28. Eemaldage tühjad stringid
  29. Kirjutage tekstifaili vektor
  30. Looge tekstifailist vektor

Sisestage element vektorisse

The std::vector::insert() funktsiooni C++ STL-is kasutatakse elementide sisestamiseks määratud kohta.



Süntaks:

vektor. sisestada ( asend, element ) ;

Kasutame seda funktsiooni ja edastame esimese positsiooni parameetrina, mis määrab asukoha, kuhu element tuleb sisestada, ja esitame elemendi teise parameetrina.



Funktsiooni begin() saab siin kasutada, et tagastada iteraator, mis osutab sisendvektori esimesele elemendile. Lisades sellele funktsioonile positsiooni, sisestatakse element sellesse kohta.





Loome stringi tüüpi vektori 'õpilase_nimed' ja sisestame funktsiooni insert() abil üksteise järel kaks stringi esimesse ja teise positsiooni.

#include

kasutades nimeruum std ;

peamine ( )

{

// Vektori initsialiseerimine - õpilaste_nimed

vektor < string > õpilaste_nimed ;

cout << 'Olemasolev vektor: \n ' ;

jaoks ( auto i : õpilaste_nimed ) cout << i << endl ;

// Sisestage 'Sravan Kumar' esimesse kohta

õpilaste_nimed. sisestada ( õpilaste_nimed. alustada ( ) + 0 , 'Shravan Kumar' ) ;

// Sisestage 'Sravan Kumar' teisele kohale

õpilaste_nimed. sisestada ( õpilaste_nimed. alustada ( ) + 1 , 'Lalitha' ) ;

cout << 'Lõplik vektor: \n ' ;

jaoks ( auto j : õpilaste_nimed ) cout << j << endl ;

}

Väljund:

Varem oli vektor „õpilaste_nimed” tühi. Pärast sisestamist sisaldab vektor kahte elementi.



Sisestage vektorisse mitu elementi

Selles stsenaariumis kasutame sama funktsiooni, mis on std::vector::insert(). Kuid peame vektorisse mitme elemendi sisestamiseks edastama samale funktsioonile lisa-/erinevad parameetrid.

1. stsenaarium: ühe elemendi sisestamine mitu korda

Selle stsenaariumi korral lisame sama elemendi mitu korda.

Süntaks:

vektor. sisestada ( asend, suurus, element ) ;

Selleks peame suuruse teise parameetrina edastama funktsioonile insert(). Sellele funktsioonile edastatakse kokku kolm parameetrit.

Siin:

  1. Positsiooniparameeter määrab sisestatava elemendi asukoha. Kui suurus on suurem kui 1, on lähtepositsiooni indeks positsioon.
  2. Suuruse parameeter määrab, mitu korda elementi tuleb sisestada.
  3. Elemendi parameeter võtab vektorisse sisestatava elemendi.

Mõelge kahe stringiga vektorile 'õpilase_nimed'. Sisestage 'Lavanya' stringid viis korda teise asendisse.

#include

kasutades nimeruum std ;

peamine ( )

{

// Vektori initsialiseerimine - õpilaste_nimed

vektor < string > õpilaste_nimed { 'Shravan Kumar' , 'Lalitha' } ;

cout << 'Olemasolev vektor: \n ' ;

jaoks ( auto i : õpilaste_nimed ) cout << i << endl ;

// Sisestage 'Lavanya' teisele positsioonile 5 korda

õpilaste_nimed. sisestada ( õpilaste_nimed. alustada ( ) + 1 , 5 , 'Lavanya' ) ;

cout << ' \n Lõplik vektor: \n ' ;

jaoks ( auto j : õpilaste_nimed ) cout << j << endl ;

}

Väljund:

Olemasolevas vektoris on 'Sravan Kumar' esimesel positsioonil ja 'Lalitha' teisel positsioonil. Pärast “Lavanya” viit korda sisestamist (teiselt positsioonilt kuuendale positsioonile) liikus “Lalitha” seitsmendale positsioonile (viimasele).

2. stsenaarium: mitme elemendi sisestamine

Selle stsenaariumi korral lisame erinevad elemendid korraga teisest vektorist. Kasutame ka siin sama funktsiooni, kuid süntaks ja parameetrid muutuvad.

Süntaks:

vektor. sisestada ( positsioon, esimene_iteraator, teine_iteraator ) ;

Selleks peame suuruse teise parameetrina edastama funktsioonile insert(). Sellele funktsioonile edastatakse kokku kolm parameetrit.

Siin:

  1. Positsiooniparameeter määrab sisestatava elemendi asukoha.
  2. 'First_iterator' määrab lähtepositsiooni, kust elemendid sisestatakse (põhimõtteliselt tagastatakse funktsiooni begin() abil iteraator, mis osutab konteineris olevale esimesele elemendile).
  3. 'Second_iterator' määrab lõpupositsiooni, milleni elemendid sisestatakse (põhimõtteliselt, kasutades end() funktsiooni, tagastatakse iteraator, mis osutab konteineris oleva viimase punkti kõrvale).

Looge kaks täisarvu tüüpi vektorit, 'marks1' ja 'marks2'. Sisestage kõik elemendid, mis on vektoris 'marks2' vektori 'marks1' esimesse kohta.

#include

kasutades nimeruum std ;

peamine ( )

{

// Vektori initsialiseerimine - märgid1

vektor < int > märgid1 { 100 , 89 , 90 , 78 , 98 } ;

cout << 'Esimene vektor: \n ' ;

jaoks ( auto i : märgid1 ) cout << i << endl ;

// Vektori initsialiseerimine - märgid2

vektor < int > märgid2 { 56 , Neli, viis , 65 } ;

cout << 'Teine vektor: \n ' ;

jaoks ( auto j : märgid2 ) cout << j << endl ;

märgid1. sisestada ( alustada ( märgid1 ) , alusta ( märgid2 ) , lõpp ( märgid 2 ) ) ;



// Lõplik vektor

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

jaoks ( auto x : märgid1 )

cout << x << ' ' ;

}

Väljund:

Esimene vektor (marks1) sisaldab viit elementi ja teine ​​vektor (marks2) sisaldab kolme elementi. Edendasime parameetrid algus (marks1), begin (marks2), end (marks2) funktsioonile 'insert', nii et kõik teises vektoris olevad elemendid itereeritakse ja sisestatakse alguses esimesse vektorisse. Niisiis, esimene vektor sisaldab kaheksat elementi.

Juurdepääs elementidele vektorist

1. Operaatori [] kasutamine

Mõne stsenaariumi korral võib teil olla nõue tagastada vektorist ainult konkreetsed elemendid. Kõiki elemente pole vaja tagastada. Seega, et tagastada ainult konkreetsed indeksil põhinevad elemendid, kasutatakse indeksi operaatorit ja at() funktsioone.

Süntaks:

vektor [ indeks_positsioon ]

C++ puhul algab indekseerimine mis tahes andmestruktuuri puhul nullist. Kui elementi pole olemas, tagastatakse see tühjana (viga puudub või hoiatust ei kuvata).

Mõelge viie elemendiga toodete vektorile. Juurdepääs kõigile elementidele ükshaaval, kasutades indeksi asukohta.

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – 5 stringiga tooted

vektor < string > tooted { 'seep' , 'šampoon' , 'õli' , 'puuviljad' , 'köögiviljad' } ;

//Juurdepääs toodetest elementidele

cout << 'Esimene element:' << tooted [ 0 ] << endl ;

cout << 'Teine element:' << tooted [ 1 ] << endl ;

cout << 'Kolmas element:' << tooted [ 2 ] << endl ;

cout << 'Neljas element:' << tooted [ 3 ] << endl ;

cout << 'Viies element:' << tooted [ 4 ] << endl ;



// Proovige pääseda 9. elemendile

cout << 'Üheksas element:' << tooted [ 8 ] << endl ;

}

Väljund:

Indeksis 8 pole elementi. Seega tagastatakse tühi.

2. Funktsiooni At() kasutamine

At() on liigefunktsioon, mis sarnaneb eelmisele kasutusjuhtumile, kuid tagastab erandi „std::vahemikust_väljas”, kui talle antakse indeks väljaspool vahemikku.

Süntaks:

vektor. juures ( indeks_positsioon )

Peame sellele funktsioonile edastama indeksi positsiooni.

Mõelge viie elemendiga toodete vektorile. Juurdepääs kõigile elementidele ükshaaval, kasutades indeksi positsiooni ja proovige pääseda juurde elemendile, mis asub 9. positsioonil.

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – 5 stringiga tooted

vektor < string > tooted { 'seep' , 'šampoon' , 'õli' , 'puuviljad' , 'köögiviljad' } ;

//Juurdepääs toodetest elementidele

cout << 'Esimene element:' << tooted. juures ( 0 ) << endl ;

cout << 'Teine element:' << tooted. juures ( 1 ) << endl ;

cout << 'Kolmas element:' << tooted. juures ( 2 ) << endl ;

cout << 'Neljas element:' << tooted. juures ( 3 ) << endl ;

cout << 'Viies element:' << tooted. juures ( 4 ) << endl ;



//Juurdepääs vektoris mitteolevatele elementidele

cout << 'Üheksas element:' << tooted. juures ( 8 ) << endl ;

}

Väljund:

9. elemendile juurdepääsul ilmneb viga:

terminate kutsutakse pärast eksemplari viskamist 'std::vahemikust_väljas'

mida ( ) : vektor :: _M_vahemiku_kontroll : __n ( mis on 8 ) >= see - > suurus ( ) ( mis on 5 )

Värskendage elementi vektoris

1. Operaatori [] kasutamine

Indeksi positsiooni kasutades saame elementi vektoris värskendada. Operaator [] võtab värskendatava elemendi indeksi asukoha. Uus element määratakse sellele operaatorile.

Süntaks:

Vektor [ indeks_positsioon ] = Element

Mõelge viie väärtusega vektorile 'õpilase_märgid'. Värskendage indeksite 1 ja 3 juures olevaid elemente.

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor - õpilase_märgid

vektor < int > õpilase_märgid { 98 , 78 , 90 , 67 , 89 } ;

cout << 'Olemasolevad märgid:' << endl ;

jaoks ( int itr : õpilase_märgid )

cout << itr << endl ;

// Värskenda elementi indeksis 3 100-ga

õpilase_märgid [ 3 ] = 100 ;

// Värskenda elementi indeksi 1 juures 60-ga

õpilase_märgid [ 1 ] = 60 ;

cout << 'Lõppmärgid:' << endl ;

jaoks ( int itr : õpilase_märgid )

cout << itr << endl ;

}

Väljund:

Näeme, et lõplik vektor hoiab värskenduselemente indeksite 1 ja 3 juures.

2. Funktsiooni At() kasutamine

Sarnaselt indeksioperaatoriga on at() põhimõtteliselt liigefunktsioon, mis värskendab väärtust iteraatori indeksi põhjal. Kui selle funktsiooni sees määratud indeksit ei eksisteeri, visatakse välja erand „std::out_of_range”.

vektor. juures ( indeks_positsioon ) = Element

Mõelge viie elemendiga toodete vektorile. Värskendage kõiki vektoris olevaid elemente teiste elementidega.

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – 5 stringiga tooted

vektor < string > tooted { 'seep' , 'šampoon' , 'õli' , 'puuviljad' , 'köögiviljad' } ;

cout << 'Olemasolevad tooted:' << endl ;

jaoks ( string itr : tooted )

cout << itr << endl ;

//Kõigi stringide värskendamine

tooted. juures ( 0 ) = 'Kook' ;

tooted. juures ( 1 ) = 'Šokolaad' ;

tooted. juures ( 2 ) = 'Puuviljad' ;

tooted. juures ( 3 ) = 'sibul' ;

tooted. juures ( 4 ) = 'Karastusjoogid' ;



cout << ' \n Lõpptooted: ' << endl ;

jaoks ( string itr : tooted )

cout << itr << endl ;

}

Väljund:

Konkreetse elemendi eemaldamine vektorist

C++ keeles on std::vektor::kustuta() funktsiooni kasutatakse konkreetse elemendi/elementide vahemiku eemaldamiseks vektorist. Elemendid eemaldatakse iteraatori positsioonide alusel.

Süntaks:

vektor. kustutada ( iteraatori asukoht )

Vaatame süntaksit konkreetse elemendi vektorist eemaldamiseks. Eemaldatavas vektoris oleva elemendi asukoha leidmiseks saame kasutada funktsioone begin() või end().

Mõelge viie elemendiga toodete vektorile.

  1. Eemaldage kolmas element, määrates iteraatori begin(). Begin() osutab vektori esimesele elemendile. Kui lisame sellele funktsioonile kaks, osutab see kolmandale elemendile.
  2. Eemaldage viimane element, määrates end() iteraatori. End() osutab vektori viimasele elemendile.
#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – 5 stringiga tooted

vektor < string > tooted { 'seep' , 'šampoon' , 'õli' , 'puuviljad' , 'köögiviljad' } ;

cout << 'Olemasolevad tooted:' << endl ;

jaoks ( string itr : tooted )

cout << itr << endl ;



// Eemalda 3. element

tooted. kustutada ( tooted. alustada ( ) + 2 ) ;

cout << ' \n Pärast 3. elemendi eemaldamist: \n ' ;

jaoks ( string itr : tooted )

cout << itr << endl ;

// Eemalda viimane element

tooted. kustutada ( tooted. lõpp ( ) ) ;

cout << ' \n Pärast viimase elemendi eemaldamist: \n ' ;

jaoks ( string itr : tooted )

cout << itr << endl ;

}

Väljund:

Nüüd on 'toodete' vektoris ainult kolm elementi ('seep', 'šampoon', 'puuviljad').

Eemaldage vektorist kõik elemendid

1. stsenaarium: eemaldage vektorist elementide vahemik

Kasutame funktsiooni std::vector::erase() mitme elemendi eemaldamiseks vahemikus.

Süntaks:

vektor. kustutada ( iteraator esimene, iteraator viimane )

Vahemiku täpsustamiseks kasutatakse kahte iteraatorit (begin() osutab esimesele elemendile ja end() osutab viimasele elemendile).

Mõelge viie elemendiga 'toodete' vektorile ja eemaldage kõik elemendid teisest positsioonist. Selle saavutamiseks on esimene iteraator algus (produktid)+1, mis osutab teisele elemendile ja teine ​​iteraator lõpp (tooted).

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – 5 stringiga tooted

vektor < string > tooted { 'seep' , 'šampoon' , 'õli' , 'puuviljad' , 'köögiviljad' } ;

cout << 'Olemasolevad tooted:' << endl ;

jaoks ( string itr : tooted )

cout << itr << endl ;



// Eemaldage kõik elemendid teisest positsioonist

tooted. kustutada ( alustada ( tooted ) + 1 ,lõpp ( tooted ) ) ;

cout << ' \n Lõpptooted: \n ' ;

jaoks ( string itr : tooted )

cout << itr << endl ;

}

Väljund:

Nüüd on 'toodete' vektoris ainult üks element ('seep').

2. stsenaarium: eemaldage vektorist kõik elemendid

Kasutame std::vector::clear() funktsioon vektorist kõigi elementide eemaldamiseks.

Süntaks:

vektor. selge ( )

Sellele funktsioonile ei edastata parameetreid.

Mõelge samale vektorile, mida kasutati esimeses stsenaariumis, ja eemaldage kõik elemendid funktsiooni clear() abil.

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – 5 stringiga tooted

vektor < string > tooted { 'seep' , 'šampoon' , 'õli' , 'puuviljad' , 'köögiviljad' } ;

cout << 'Olemasolevad tooted:' << endl ;

jaoks ( string itr : tooted )

cout << itr << endl ;



// Eemaldage toodetest kõik elemendid

tooted. selge ( ) ;

cout << ' \n Lõpptooted: \n ' ;

jaoks ( string itr : tooted )

cout << itr << endl ;

}

Väljund:

Näeme, et 'produktide' vektoris pole elemente.

Vektorite Liit

Funktsiooni std::set_union() abil on võimalik teostada vektoritega UNION-operatsiooni. Liit tagastab unikaalsed elemendid vektoritest, ignoreerides dubleerivaid elemente. Peame mõlemad iteraatorid sellele funktsioonile edastama. Koos sellega tuleb läbida väljunditeraator, mis salvestab mõlema iteraatori tagastatud tulemuse.

Süntaks:

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

Siin:

  1. 'First1' osutab esimese iteraatori (vektori) esimesele elemendile.
  2. 'Last1' osutab esimese iteraatori (vektori) viimasele elemendile.
  3. 'First2' osutab teise iteraatori (vektori) esimesele elemendile.
  4. 'Last2' osutab teise iteraatori (vektori) viimasele elemendile.

Looge kaks täisarvu tüüpi vektorit – “subjects1” ja “subjects2”.

  1. Sorteerige kaks vektorit funktsiooni sort() abil, jättes iteraatorid.
  2. Looge väljundvektor (iteraator).
  3. Leidke nende kahe vektori liit, kasutades funktsiooni std::set_union(). Kasutage algust() esimese iteraatorina ja end() viimase iteraatorina.
  4. Funktsiooni tagastatud elementide kuvamiseks korrake väljundvektorit.
#include

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor - märgid1

vektor < int > märgid1 = { 100 , 90 , 80 , 70 , 60 } ;



// Loo vektor - marks2

vektor < int > märgid 2 = { 80 , 90 , 60 , 70 , 100 } ;

// Sorteeri mõlemad vektorid

sorteerida ( märgid1. alustada ( ) , märgid1. lõpp ( ) ) ;

sorteerida ( märgid2. alustada ( ) , märgid2. lõpp ( ) ) ;

vektor < int > väljundvektor ( märgid1. suurus ( ) + märgid2. suurus ( ) ) ;

vektor < int > :: iteraator on ;

i = komplekt_liit ( märgid1. alustada ( ) , märgid1. lõpp ( ) ,

märgid2. alustada ( ) ,märgid2. lõpp ( ) ,

väljundvektor. alustada ( ) ) ;

cout << ' \n marks1 U marks2: \n ' ;

jaoks ( s = väljundvektor. alustada ( ) ; s ! = i ; ++ s )

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

}

Väljund:

Mõlemas vektoris (subjektid1 ja subjektid2) on ainult viis ainulaadset elementi.

Vektorite ristumiskoht

Kahe vektori ristumiskoha leidmine on võimalik funktsiooni std::set_intersection() abil. Ristmik tagastab elemendid, mis esinevad mõlemas vektoris.

Süntaks:

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

Funktsioonile set_union() edastatavad parameetrid saab edastada ka sellele funktsioonile set_intersection().

Looge kaks täisarvu tüüpi vektorit – “subjects1” ja “subjects2”.

  1. Sorteerige kaks vektorit funktsiooni sort() abil, edastades iteraatorid.
  2. Looge väljundvektor (iteraator).
  3. Leidke nende kahe vektori ristumiskoht funktsiooni std::set_intersection() abil. Kasutage algust() esimese iteraatorina ja end() viimase iteraatorina.
  4. Funktsiooni tagastatud elementide kuvamiseks korrake väljundvektorit.
#include

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor - märgid1

vektor < int > märgid1 = { 100 , 10 , 80 , 40 , 60 } ;



// Loo vektor - marks2

vektor < int > märgid 2 = { viiskümmend , 90 , 60 , 10 , 100 } ;

// Sorteeri mõlemad vektorid

sorteerida ( märgid1. alustada ( ) , märgid1. lõpp ( ) ) ;

sorteerida ( märgid2. alustada ( ) , märgid2. lõpp ( ) ) ;

vektor < int > väljundvektor ( märgid1. suurus ( ) + märgid2. suurus ( ) ) ;

vektor < int > :: iteraator on ;

i = sea_ristmik ( märgid1. alustada ( ) , märgid1. lõpp ( ) ,

märgid2. alustada ( ) ,märgid2. lõpp ( ) ,

väljundvektor. alustada ( ) ) ;

cout << ' \n marks1 ∩ marks2: \n ' ;

jaoks ( s = väljundvektor. alustada ( ) ; s ! = i ; ++ s )

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

}

Väljund:

Mõlemas vektoris (subjektid1 ja subjektid2) on ainult kolm elementi.

Kontrollige, kas vektor on tühi või mitte

Enne vektorite kallal töötamist on oluline kontrollida, kas vektor on tühi või mitte. Samuti on tarkvaraprojektides hea tava kontrollida, kas vektor on tühi või mitte, enne selliste toimingute tegemist nagu CRUD-toimingud jne.

1. Std::vector::empty() kasutamine

See funktsioon tagastab 1, kui vektor on tühi (ei sisalda ühtegi elementi). Vastasel juhul tagastatakse 0. Sellele funktsioonile ei edastata ühtegi parameetrit.

2. Kasutades Std::vektor::suurus()

Funktsioon std::vector::size() tagastab täisarvu, mis tähistab vektoris esinevate elementide koguarvu.

Looge kaks vektorit – 'kolledž1' ja 'kolledž2'. 'College1' sisaldab viit elementi ja 'kolledž2' on tühi. Rakendage mõlemad funktsioonid mõlemale vektorile ja kontrollige väljundit.

#include

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – kolledž1

vektor < string > kolledž 1 = { 'kolledž-A' , 'kolledž-B' , 'kolledž-C' , 'kolledž-D' , 'kolledž-E' } ;

// Loo vektor – kolledž2

vektor < string > kolledž 2 ;

// tühi()

cout << kolledž 1. tühi ( ) << endl ;

cout << kolledž 2. tühi ( ) << endl ;

// suurus()

cout << kolledž 1. suurus ( ) << endl ;

cout << kolledž 2. suurus ( ) << endl ;

}

Väljund:

Funktsioon tühi () tagastab 0 “kolledž1” ja 1 “kolledž2” jaoks. Funktsioon size() tagastab väärtuse “kolledž1” jaoks viis ja “kolledž2” jaoks 0.

Vektori läbimine Const_Iteratori abil

Kui töötate C++ konteineritega, nagu komplektid, vektorid jne, on võimalik itereerida kõiki konteineris olevaid elemente neid muutmata. The const_iterator on üks iteraatoritest, kes selle stsenaariumi saavutab. cbegin() (osutab vektori esimesele elemendile) ja cend() (osutab vektori viimasele elemendile) on iga konteineri kaks funktsiooni, mida kasutatakse konstantse iteraatori tagastamiseks vektori algusesse ja lõppu. konteiner. Vektorit itereerides saame kasutada neid kahte funktsiooni.

  1. Loome viie stringiga vektori nimega 'osakonnad'.
  2. Deklareerige const_iterator – ctr tüübiga .
  3. Itereerige osakondade üle, kasutades eelmist iteraatorit, kasutades tsüklit 'for' ja kuvage see.
#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor - osakonnad

vektor < string > osakonnad = { 'Müük' , 'Teenus' ,

'HR' , 'IT' , 'Teised' } ;



vektor < string > :: const_iterator ctr ;

// Osakondade itereerimine kasutades const_iterator - ctr.

jaoks ( ctr = osakonnad. cbegin ( ) ; ctr ! = osakonnad. mõni ( ) ; ctr ++ ) {

cout << * ctr << endl ;

}

}

Väljund:

Vektori läbimine, kasutades funktsiooni Reverse_Iterator

The reverse_iterator on ka iteraator, mis sarnaneb const_iteratoriga, kuid tagastab elemendid vastupidises järjekorras. rbegin() (osutab vektori viimasele elemendile) ja rend() (osutab vektori esimesele elemendile) on iga konteineri kaks funktsiooni, mida kasutatakse konstantse iteraatori tagastamiseks vektori lõppu ja algusesse. konteiner.

  1. Loome viie stringiga vektori nimega 'osakonnad'.
  2. Deklareerige reverse_iterator – rtr tüübiga .
  3. Itereerige osakondade üle, kasutades eelmist iteraatorit, kasutades tsüklit 'for' ja kuvage see.
#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor - osakonnad

vektor < string > osakonnad = { 'Müük' , 'Teenus' ,

'HR' , 'IT' , 'Teised' } ;



vektor < string > :: reverse_iterator rtr ;

// Itereerige osakondades kasutades reverse_iterator - rtr.

jaoks ( rtr = osakonnad. rbegin ( ) ; rtr ! = osakonnad. teeb ( ) ; rtr ++ ) {

cout << * rtr << endl ;

}

}

Väljund:

Lükake elemendid vektorisse

Elementide surumine või lisamine vektorisse on ühesuunaline sisestamine, mida saab teha kasutades vektor::push_back() funktsiooni.

Süntaks:

vektor. lükka tagasi ( element )

Selleks on vaja elementi, mis lükatakse vektorisse parameetrina.

Loome viie stringiga tühja vektori nimega 'osakonnad' ja lükkame kaks stringi üksteise järel, kasutades funktsiooni push_back().

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Initsialiseeri vektor - osakonnad

vektor < string > osakonnad ;

cout << 'Tegelikud osakonnad:' << endl ;

jaoks ( auto itr = osakonnad. alustada ( ) ; itr ! = osakonnad. lõpp ( ) ; ++ itr )

cout << * itr << endl ;

// Lükake 'Müük'

osakonnad. lükka tagasi ( 'Müük' ) ;

// Lükake'

osakonnad. lükka tagasi ( 'IT' ) ;

cout << ' \n Lõpuosakonnad:' << endl ;

jaoks ( auto itr = osakonnad. alustada ( ) ; itr ! = osakonnad. lõpp ( ) ; ++ itr )

cout << * itr << endl ;

}

Väljund:

Esiteks vajutame 'Müük'. Pärast seda lükatakse 'IT' vektorisse. Nüüd sisaldab 'osakondade' vektor kahte elementi.

Popige elemendid vektorist

Kui soovite kustutada viimase vektoris oleva üksuse, kasutage vektor::pop_back() funktsioon on parim lähenemisviis. See kustutab vektoris viimase elemendi.

Süntaks:

vektor. pop_back ( )

Selle funktsiooni jaoks pole parameetrit vaja. See näitab määratlemata käitumist, kui proovime kustutada viimast elementi tühjast vektorist.

Loome viie stringiga tühja vektori nimega 'osakonnad' ja kustutame eelmise funktsiooni abil viimase elemendi. Kuvage vektor mõlemal juhul.

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Initsialiseeri vektor - osakonnad

vektor < string > osakonnad = { 'Müük' , 'IT' , 'Teenus' , 'Turundus' , 'HR' } ;

cout << 'Tegelikud osakonnad:' << endl ;

jaoks ( auto itr = osakonnad. alustada ( ) ; itr ! = osakonnad. lõpp ( ) ; ++ itr )

cout << * itr << endl ;



// Kustutage viimane element

osakonnad. pop_back ( ) ;

cout << ' \n Lõpuosakonnad:' << endl ;

jaoks ( auto itr = osakonnad. alustada ( ) ; itr ! = osakonnad. lõpp ( ) ; ++ itr )

cout << * itr << endl ;

}

Väljund:

'HR' on viimane element, mis on vektoris 'osakonnad'. Seega eemaldatakse see vektorist ja lõplik vektor sisaldab 'Müük', 'IT', 'Teenus' ja 'Turundus'.

Vahetage vektorid

The vektor::swap() C++ STL-i funktsiooni kasutatakse kõigi kahes vektoris esinevate elementide vahetamiseks.

Süntaks:

esimene_vektor. vahetus ( teine_vektor )

See ei võta arvesse vektorite suurust, kuid vektorid peaksid olema sama tüüpi (erinevate vektoritüüpide korral kuvatakse viga).

Loome kaks erineva suurusega stringi tüüpi vektorit – 'puuviljad' ja 'juurviljad'. Vahetage igaüks neist ja kuvage vektorid mõlemal juhul.

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Initsialiseeri vektor - puuviljad

vektor < string > puuviljad = { 'Õun' , 'Mango' } ;

cout << 'Tegelikud puuviljad:' << endl ;

jaoks ( auto itr = puuviljad. alustada ( ) ; itr ! = puuviljad. lõpp ( ) ; ++ itr )

cout << * itr << endl ;



// Initsialiseeri vektor - köögiviljad

vektor < string > köögiviljad = { 'Kartul' , 'tomat' , 'Brinjal' } ;

cout << ' \n Tegelikud köögiviljad:' << endl ;

jaoks ( auto itr = köögiviljad. alustada ( ) ; itr ! = köögiviljad. lõpp ( ) ; ++ itr )

cout << * itr << endl ;



// Vahetage mõlema vektori elemendid

puuviljad. vahetus ( köögiviljad ) ;

cout << ' \n Puuviljad pärast vahetamist:' << endl ;

jaoks ( auto itr = puuviljad. alustada ( ) ; itr ! = puuviljad. lõpp ( ) ; ++ itr )

cout << * itr << endl ;

cout << ' \n Köögiviljad pärast vahetamist:' << endl ;

jaoks ( auto itr = köögiviljad. alustada ( ) ; itr ! = köögiviljad. lõpp ( ) ; ++ itr )

cout << * itr << endl ;

}

Väljund:

Varem sisaldab 'puuviljade' vektor kahte elementi ja 'köögiviljade' vektor kolm elementi. Pärast vahetamist sisaldab 'puuviljade' vektor kolm elementi ja 'köögiviljade' vektor kaks elementi.

Tõmba esimene element vektorist

Mõnel juhul on nõue tagastada vektorist ainult esimene element. Funktsioon vektor::front() C++ STL-is toob vektorist ainult esimese elemendi.

Süntaks:

vektor. ees ( )

See funktsioon ei kasuta ühtegi parameetrit. Kui vektor on tühi, kuvatakse viga.

Loome kaks stringi tüüpi vektorit – 'puuviljad' ja 'juurviljad' - ja proovime tuua esimese elemendi kahest vektorist eraldi.

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – 2 elemendiga puuviljad

vektor < string > puuviljad = { 'Õun' , 'Mango' } ;

// Tagastab esimese elemendi

cout << puuviljad. ees ( ) << endl ;



// Initsialiseeri vektor - köögiviljad

vektor < string > köögiviljad ;

// Proovige esimest elementi tagastada

cout << köögiviljad. ees ( ) ;

}

Väljund:

'Õun' on esimene element, mis on 'puuviljade' vektoris. Niisiis, see tagastatakse. Kuid kui proovime tuua esimest elementi 'köögiviljade' vektorist, kuvatakse viga, kuna see on tühi.

Tõmba viimane element vektorist

Funktsioon vektor::end() C++ STL-is toob vektorist ainult viimase elemendi.

Süntaks:

vektor. tagasi ( )

See funktsioon ei võta ühtegi parameetrit. Kui vektor on tühi, kuvatakse viga.

Loome kaks stringi tüüpi vektorit – 'puuviljad' ja 'juurviljad' - ja proovime tuua viimase elemendi kahest vektorist eraldi.

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – 2 elemendiga puuviljad

vektor < string > puuviljad = { 'Õun' , 'Mango' } ;

// Viimase elemendi toomine

cout << puuviljad. tagasi ( ) << endl ;



// Initsialiseeri vektor - köögiviljad

vektor < string > köögiviljad ;

// Proovige tuua viimane element

cout << köögiviljad. tagasi ( ) ;

}

Väljund:

'Mango' on viimane element, mis on 'puuviljade' vektoris. Niisiis, see tagastatakse. Kuid viga ilmub siis, kui püüame tuua viimast elementi 'köögiviljade' vektorist, kuna see on tühi.

Määrake vektorile uued väärtused

Mõne stsenaariumi korral, kui soovite värskendada kõiki väärtusi uue väärtusega või luua samade väärtustega vektori, on funktsiooni vektor::assign() kasutamine parim viis. Seda funktsiooni kasutades saame:

  1. Looge vektor kõigi sarnaste elementidega
  2. Muutke olemasolevat vektorit sama elemendiga

Süntaks:

vektor. määrama ( suurus, väärtus )

Selle funktsiooni jaoks on vaja kahte parameetrit.

Siin:

  1. Suurus määrab määratavate elementide arvu.
  2. Väärtus määrab määratava elemendi.

Loome viie väärtusega vektori nimega 'marks1' ja värskendame seda vektorit nelja elemendiga nii, et kõik värskendatud vektori elemendid oleksid võrdsed 20-ga.

#include

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor - märgid1

vektor < int > märgid1 = { 100 , 90 , 80 , 70 , 60 } ;

cout << 'Tegelik vektor:' << endl ;

jaoks ( int i = 0 ; i < märgid1. suurus ( ) ; i ++ )

cout << märgid1 [ i ] << endl ;



märgid1. määrama ( 4 , kakskümmend ) ;



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

jaoks ( int i = 0 ; i < märgid1. suurus ( ) ; i ++ )

cout << märgid1 [ i ] << endl ;

}

Väljund:

Varem on vektoris viis erinevat elementi. Nüüd sisaldab see ainult nelja elementi ja kõik on võrdsed 20-ga.

Laiendage vektorit Emplace() abil

Teame juba, et uued elemendid sisestatakse dünaamiliselt vektori mis tahes kohta. See on võimalik funktsiooni vektor::emplace() abil. Vaatame kiiresti selle funktsiooni poolt aktsepteeritud süntaksit ja parameetreid.

Süntaks:

vektor. asukoht ( const_iterator asukoht, element )

Sellele funktsioonile antakse edasi kaks kohustuslikku parameetrit.

Siin:

  1. Esimene parameeter võtab positsiooni, nii et saame elemendi sisestada mis tahes asendisse. Positsiooni saame kasutada iteraatori funktsiooni begin() või end() abil.
  2. Teine parameeter on vektorisse sisestatav element.

Mõelge kahe elemendiga 'kemikaalide' vektorile.

  1. Sisestage 'Mangaan' esimesse kohta – algus (kemikaalid)
  2. Sisestage 'vask' viimasesse kohta - lõpp (kemikaalid)
  3. Kolmandale kohale sisestage ‘Sulphur’ – algus(kemikaalid)+2
#include

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – kemikaalid

vektor < string > kemikaalid = { 'hapnik' , 'CO' } ;

cout << 'Tegelikud kemikaalid:' << endl ;

jaoks ( int i = 0 ; i < kemikaalid. suurus ( ) ; i ++ )

cout << kemikaalid [ i ] << endl ;



// Sisesta element esimesse kohta

kemikaalid. asukoht ( alustada ( kemikaalid ) , 'Mangaan' ) ;



// Sisestage element viimasele positsioonile

kemikaalid. asukoht ( lõpp ( kemikaalid ) , 'Vask' ) ;



// Sisestage element kolmandale kohale

kemikaalid. asukoht ( alustada ( kemikaalid ) + 2 , 'Väävel' ) ;



cout << ' \n Lõplikud kemikaalid:' << endl ;

jaoks ( int i = 0 ; i < kemikaalid. suurus ( ) ; i ++ )

cout << kemikaalid [ i ] << endl ;

}

Väljund:

Nüüd sisaldab viimane vektor viit elementi (esitatud järgmisel ekraanipildil).

Laiendage vektorit kasutades Emplace_Back()

Elemendi saab lisada (liides vektori lõppu), mida saab teha kasutades vektor::emplace_back() funktsiooni.

Süntaks:

vektor. emplace_back ( element )

Vektorile lisatava elemendi edastamine parameetrina on kohustuslik.

Lisame kaks elementi üksteise järel, kasutades funktsiooni emplace_back().

#include

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – kemikaalid

vektor < string > kemikaalid = { 'hapnik' , 'CO' } ;

cout << 'Tegelikud kemikaalid:' << endl ;

jaoks ( int i = 0 ; i < kemikaalid. suurus ( ) ; i ++ )

cout << kemikaalid [ i ] << endl ;



// Mangaani lisamine vektori lõppu

kemikaalid. emplace_back ( 'Mangaan' ) ;



// Mangaani lisamine vektori lõppu

kemikaalid. emplace_back ( 'Vask' ) ;





cout << ' \n Lõplikud kemikaalid:' << endl ;

jaoks ( int i = 0 ; i < kemikaalid. suurus ( ) ; i ++ )

cout << kemikaalid [ i ] << endl ;

}

Väljund:

Nüüd sisaldab viimane vektor neli elementi pärast 'mangaani' ja 'vase' lisamist.

Vektori maksimaalne element

  1. Looge vektor mõne elemendiga.
  2. Vektoris esineva maksimaalse elemendi leidmiseks kasutage funktsiooni *max_element(), mis aktsepteerib argumentidena kahte iteraatorit. Need kaks parameetrit toimivad vahemikuna ja maksimaalne element tagastatakse antud vahemikus. Algpositsioon on begin() ja viimane positsioon on end().
* max_element ( esimene_indeks, viimane_indeks )

Vaatleme vektorit nimega 'item_costs', mis sisaldab viit täisarvu tüüpi väärtust ja tagastab maksimaalse elemendi.

#include

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – kauba_kulud

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



cout << 'Kaubade maksumus: \n ' ;

jaoks ( int i = 0 ; i < kauba_kulud. suurus ( ) ; i ++ )

cout << kauba_kulud [ i ] << endl ;



// Tagastab maksimaalse elemendi ülaltoodud vektorist - item_costs

cout << ' \n Maksimaalne kulu: ' << * max_element ( alustada ( kauba_kulud ) ,lõpp ( kauba_kulud ) ) ;

}

Väljund:

Siin on 8900 maksimaalne element kõigi vektoris 'item_costs' olevate elementide hulgas.

Vektori minimaalne element

  1. Looge vektor mõne elemendiga.
  2. Vektoris esineva minimaalse elemendi leidmiseks kasutage funktsiooni *min_element(), mis aktsepteerib argumentidena kahte iteraatorit. Need kaks parameetrit toimivad vahemikuna ja minimaalne element (vähem kui kõik teised elemendid) tagastatakse antud vahemikus. Algpositsioon on begin() ja viimane positsioon on end().
* min_element ( esimene_indeks, viimane_indeks )

Kasutage sama vektorit, mis on loodud maksimaalse elemendi leidmiseks ja minimaalse elemendi leidmiseks funktsiooni *min_element() abil.

#include

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – kauba_kulud

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



cout << 'Kaubade maksumus: \n ' ;

jaoks ( int i = 0 ; i < kauba_kulud. suurus ( ) ; i ++ )

cout << kauba_kulud [ i ] << endl ;



// Tagastab ülaltoodud vektorist minimaalse elemendi - item_costs

cout << ' \n Minimaalne kulu: ' << * min_element ( alustada ( kauba_kulud ) ,lõpp ( kauba_kulud ) ) ;

}

Väljund:

Siin on 200 minimaalne element kõigi vektoris „item_costs” olevate elementide hulgas.

Elementide summa vektoris

Kõigi vektoris esinevate elementide summa tagastamiseks koguma () funktsiooni kasutatakse C++ STL-is. See aktsepteerib kolme parameetrit. Esimene parameeter võtab esimese indeksi, mis tähistab vahemiku alguselementi (määrake algus() iteraator) ja teine ​​parameeter võtab viimase indeksi, mis tähistab vahemiku lõpuelementi (määrake end() iteraator) . Lõpuks peame edastama summa algväärtuse (meie puhul on see 0).

koguneda ( esimene_indeks, viimane_indeks, esialgne_väärtus ) ;

Looge viie täisarvu tüüpi elemendiga vektor nimega 'item_costs' ja arvutage summa.

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – kauba_kulud

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



cout << 'Kaubade maksumus: \n ' ;

jaoks ( int i = 0 ; i < kauba_kulud. suurus ( ) ; i ++ )

cout << kauba_kulud [ i ] << endl ;



// Tagastab kõigi ülaltoodud vektori elementide summa - item_costs

cout << ' \n Kogumaksumus: ' << koguneda ( alustada ( kauba_kulud ) ,lõpp ( kauba_kulud ) , 0 ) ;

}

Väljund:

Summa 8900, 5677, 200, 1000, 2300 on 18077.

Kahe vektori elemendipõhine korrutamine

  1. Loo kaks numbrilise tüübiga vektorit ja kaks vektorit peavad olema ühesuurused (esimeses vektoris olevate elementide koguarv = teises vektoris esinevate elementide koguarv).
  2. Deklareerige uus vektor ja kasutage silmuse jaoks , sooritage igas iteratsioonis kahe elemendiga korrutamisoperatsioon ja salvestage väärtus loodud vektorisse, kasutades funktsiooni push_back().
  3. jaoks ( int itr = 0 ; i < esimene_vec. suurus ( ) ; itr ++ )

    {

    tulemus_vektor. lükka tagasi ( esimene_vec [ itr ] * sec_thing [ itr ] ) ;

    }
  4. Kuvage resultantvektoris esinevad elemendid seda itereerides.

Looge viie täisarvu tüüpi elemendiga vektor nimega 'item_costs' ja arvutage summa.

#include

kasutades nimeruum std ;

peamine ( )

{

// Looge kaks vektorit – korrutis1 ja korrutis2, kumbki 5 elemendiga

vektor < int > tooted 1 = { 10 , kakskümmend , 30 , 40 , viiskümmend } ;

vektor < int > tooted 2 = { viiskümmend , 40 , 30 , 70 , 60 } ;



vektor < int > result_products ;



// Sooritage elementaarne korrutamine

jaoks ( int i = 0 ; i < tooted 1. suurus ( ) ; i ++ ) {

result_products. lükka tagasi ( tooted 1 [ i ] * tooted 2 [ i ] ) ;

}



// Kuvab resultantvektori

cout << 'Vektori korrutamine: \n ' ;

jaoks ( int res : result_products )

cout << res << endl ;

}

Väljund:

Iteratsioon - 1 : 10 * viiskümmend => 500

Iteratsioon - 2 : kakskümmend * 40 => 800

Iteratsioon - 3 : 30 * 30 => 900

Iteratsioon - 4 : 40 * 70 => 2800

Iteratsioon - 5 : viiskümmend * 60 => 3000

Kahe vektori punktkorrutis

C++ vektorite puhul defineeritakse punktkorrutis 'kahe vektorijada vastavate kirjete korrutiste summana'.

Süntaks:

sisemine_toode ( Vektor1 esimene, Vektor1 viimane, Vektor2 esimene, Algne_val )

Kasutage punktitoote tagastamiseks funktsiooni inner_product(). See funktsioon võtab neli nõutavat parameetrit.

Siin:

  1. Esimene parameeter viitab iteraatorile, mis osutab esimese vektori algusesse (täpsustage funktsiooni begin() abil).
  2. Teine parameeter viitab iteraatorile, mis osutab esimese vektori lõpule (täpsustage end() funktsiooniga).
  3. Kolmas parameeter viitab iteraatorile, mis osutab teise vektori algusesse (täpsustage funktsiooni begin() abil).
  4. Algväärtus tuleb edastada viimase parameetrina, mis on punktkorrutise kogumise täisarv.

Kasutage sama programmi, mis on loodud kahe vektori korrutamiseks, ja kasutage funktsiooni innsr_product() kahe vektori punktkorrutise leidmiseks.

#include

kasutades nimeruum std ;

peamine ( )

{

// Looge kaks vektorit – korrutis1 ja korrutis2, kumbki 5 elemendiga

vektor < int > tooted 1 = { 10 , kakskümmend , 30 , 40 , viiskümmend } ;

vektor < int > tooted 2 = { viiskümmend , 40 , 30 , 70 , 60 } ;



// Kuvab resultantvektori

cout << 'Toodete1 ja toodete 2 punktkorrutis:' ;

cout << sisemine_toode ( alustada ( tooted 1 ) ,lõpp ( tooted 1 ) , alusta ( tooted 2 ) , 0 ) ;

}

Väljund:

( 10 * viiskümmend ) + ( kakskümmend * 40 ) + ( 30 * 30 ) + ( 40 * 70 ) + ( viiskümmend * 60 )

=> 500 + 800 + 900 + 2800 + 3000

=> 8000

Teisendage komplekt vektoriks

Hulgi teisendamiseks vektoriks on mitmeid viise, edastades kõik komplektis tõstetud elemendid vektorisse. Parim ja lihtsaim viis on kasutada funktsiooni std::copy().

Süntaks

std :: kopeerida ( SourceIterator esimene, sourceIterator viimane, destinationIterator esimene )

Kasuta std::copy() funktsioon, mis lisab hulga elemendid vektorisse. See võtab kolm parameetrit.

Siin:

  1. Esimene parameeter viitab lähteiteraatorile, mis osutab iteraatori esimesele elemendile. Siin on set lähteiteraator, mis määratakse funktsiooni begin() abil.
  2. Samamoodi osutab teine ​​parameeter viimasele elemendile (funktsioon end()).
  3. Kolmas parameeter viitab sihtkoha iteraatorile, mis osutab iteraatori esimesele elemendile (määratud funktsiooni begin() abil).

Loome viie õpilasega komplekti ja kopeerime kõik elemendid eelmise funktsiooni abil vektorisse.

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo komplekt – õpilased 5 elemendiga

seatud < string > õpilased = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' } ;

cout << 'Seadista: \n ' ;

jaoks ( string i : õpilased )

cout << i << endl ;



// Loo vektor – student_vcof suurus võrdub komplekti suurusega

vektor < string > õpilane_vc ( õpilased. suurus ( ) ) ;



// Sisesta elemendid komplektist - õpilased vektorisse - õpilane_vc.

kopeerida ( õpilased. alustada ( ) , õpilased. lõpp ( ) , üliõpilane_vc. alustada ( ) ) ;



cout << ' \n Vektor: \n ' ;

jaoks ( string i : õpilane_vc )

cout << i << endl ;

}

Väljund:

Nüüd kopeeritakse kõik elemendid, mis on komplektis „Õpilased”, vektorisse „students_vc”.

Eemaldage dubleerivad elemendid

  1. Esiteks peame vektori elemendid sorteerima nii, et kõik duplikaatelemendid oleksid üksteise kõrval, kasutades std::sort() funktsiooni.
  2. std :: sorteerida ( Vektor esimene, vektor viimane ) ;
  3. Kasutage funktsiooni std::unique(), et valida dubleerivad elemendid. Samal ajal kasutage funktsiooni erase() funktsiooni std::unique() tagastatud duplikaatide eemaldamiseks. Elementide järjekord võib lõppvektoris muutuda.
  4. vektor. kustutada ( std :: ainulaadne ( Vektor esimene, vektor viimane ) , Vektor viimane ) )

Looge 10 elemendiga vektor 'õpilased' ja tagastage vektor, eemaldades duplikaadid.

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor – õpilased 10 elemendiga

vektor < string > õpilased = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' ,

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

cout << 'Õpilased: \n ' ;

jaoks ( string i : õpilased )

cout << i << ' ' ;



// Sordi kõik elemendid õpilaste vektoris.

sorteerida ( alustada ( õpilased ) , lõpp ( õpilased ) ) ;



// Kasutage unikaalset () funktsiooni, et eemaldada duplikaadid funktsiooniga erase().

õpilased. kustutada ( ainulaadne ( alustada ( õpilased ) , lõpp ( õpilased ) ) , lõpp ( õpilased ) ) ;



cout << ' \n \n Unikaalsed õpilased: \n ' ;

jaoks ( auto itr = cbegin ( õpilased ) ; itr ! = mõni ( õpilased ) ; ++ itr ) {

cout << * itr << ' ' ;

}

}

Väljund:

Nüüd on kõik elemendid vektoris ainulaadsed.

Teisendage vektor komplektiks

Määra ei luba dubleerivaid elemente. Kui sisestate vektori sisestamiseks duplikaatide komplekti, ignoreeritakse neid. Kasutame sama funktsiooni std::copy(), mida kasutati eelmises stsenaariumis, mis teisendas komplekti vektoriks.

Selle stsenaariumi korral:

  1. Esimene parameeter võtab lähteiteraatoriks vektori, mis määratakse funktsiooni begin() abil.
  2. Teine parameeter võtab vektori lähteiteraatoriks, mis määratakse funktsiooni end() abil.
  3. Edastage funktsioon std::inserter(), mida kasutatakse elementide automaatseks ülekirjutamiseks/kopeerimiseks komplektis kindlas kohas, pakkudes parameetritena komplekti ja iteraatorit, mis osutavad komplekti lõppu.

Loome 10 täisarvuga vektori ja kopeerime elemendid hulka.

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo komplekt – märgid 10 väärtusega

vektor < int > märgid = { 12 , 3. 4 , 56 , 78 , 65 , 78 , 90 , 90 , 78 , 3. 4 } ;

cout << 'Vektor: \n ' ;

jaoks ( int i : märgid )

cout << i << ' ' ;



// Loo komplekt - marks_set, mille suurus on võrdne vektori suurusega

seatud < int > marks_set ;



// Sisesta elemendid komplektist - õpilased vektorisse - õpilane_vc.

kopeerida ( alustada ( märgid ) ,lõpp ( märgid ) , sisestaja ( marks_set,end ( marks_set ) ) ) ;



cout << ' \n \n Määra: \n ' ;

jaoks ( int i : marks_set )

cout << i << ' ' ;

}

Väljund:

Olemasoleval vektoril nimega 'märgid' on 10 väärtust. Pärast selle kopeerimist komplekti 'marks_set' sisaldab see ainult kuus elementi, kuna ülejäänud neli elementi on dubleeritud.

Eemaldage tühjad stringid

Tühjadest stringidest, mis vektoris esinevad, pole kasu. Hea tava on eemaldada vektoris olevad tühjad stringid. Vaatame, kuidas eemaldada tühjad stringid C++ vektorist:

  1. Itereerige vektorit 'for' tsükli abil.
  2. Igas iteratsioonis kontrollige, kas element on tühi ('') või ei kasutata operaatorit '==' koos liikmefunktsiooniga at().
  3. Funktsiooni std::erase() abil eemaldage tühjad stringid pärast eelmise tingimuse kontrollimist.
  4. Korrake samme 2 ja 3 kuni vektori lõpuni.

Loome 10 stringiga vektori 'ettevõtted'. Nende hulgas on viis tühjad ja eemaldame need, rakendades eelmist lähenemisviisi.

#include

#include

kasutades nimeruum std ;

peamine ( ) {



vektor < string > ettevõtted { 'Ettevõte A' , '' , 'Ettevõte-B' ,

'' , 'Ettevõte-C' , '' , 'Ettevõte-D' , '' , '' , '' } ;



// Korda ettevõtete üle

// ja eemaldage tühjad elemendid kasutades erase ()

jaoks ( int itr = 1 ; itr < ettevõtted. suurus ( ) ; ++ itr ) {

kui ( ettevõtted. juures ( itr ) == '' ) {

ettevõtted. kustutada ( ettevõtted. alustada ( ) + itr ) ;

-- itr ;

}
}

// Vektori kuvamine


jaoks ( auto & i : ettevõtted ) {

cout << i << endl ;

}

}

Väljund:

Nüüd hoiab 'ettevõtete' vektor mittetühi stringe.

Kirjutage tekstifaili vektor

Arutame, kuidas kirjutada kõik vektoris olevad elemendid faili, kasutades vektorindekseid kasutades fstream .

  1. Lükake mõned elemendid sellesse, kasutades funktsiooni push_back pärast vektori lähtestamist.
  2. Kasutage 'fstream' teegi funktsiooni open() režiimiga out.
  3. Läbige kõik vektoris olevad elemendid, kasutades indekseid 'for' tsüklis ja kirjutage iga element etteantud faili.
  4. Lõpuks sulgege fail.

Rakendame eelmist lähenemisviisi, käivitades C++ koodi.

#include

#include

#include

#include

kasutades nimeruum std ;

peamine ( )

{

// Loo vektor - v_data

// ja suruge sinna kaks elementi.

vektor < string > v_andmed ;

v_andmed. lükka tagasi ( 'Tere tulemast' ) ;

v_andmed. lükka tagasi ( 'LinuxHintile' ) ;

oja f ;



// Avage fail

f. avatud ( 'kirjutatud_fail.txt' ,ios_base :: välja ) ;

// Itereerige vektori iga elementi ja kirjutage faili ükshaaval.

jaoks ( int i = 0 ; i < v_andmed. suurus ( ) ; i ++ )

{

f << v_andmed [ i ] << endl ;

}

// Sule fail

f. Sulge ( ) ;

}

Väljund:

Vektor 'v_data' sisaldab kahte elementi ja faili luuakse teele, kus programm käivitatakse vektoris esinevate elementidega.

Looge tekstifailist vektor

Õppisime, kuidas vektoris esinevaid elemente tekstifaili kirjutada. Loome siin tekstifailis olevast sisust vektori.

  1. Looge ' ifstream” muutuja, mida kasutatakse teabe lugemiseks tekstifailist, milles me failist vektori loome.
  2. Looge faili sisu salvestamiseks tühi vektor ja kasutage faili lõpu kontrollimiseks lipuna tühja stringi muutujat.
  3. Lugege failist järgmist rida, kuni see jõuab lõpuni (põhimõtteliselt kasutades tsüklit 'while'). Kasutage funktsiooni push_back(), et lugeda järgmine rida ja lükata see vektorisse.
  4. Konsooli vektoris esinevate elementide nägemiseks kuvage real esinev rida eraldi.

Rakendame eelmist lähenemisviisi, käivitades C++ koodi. Vaatleme järgmise sisuga faili „data.txt”. Siin on vektori nimi 'v_data'.

#include

kasutades nimeruum std ;

peamine ( )

{

// Ava tekstifail - andmed
ifstream fail ( 'data.txt' ) ;

// Loo vektor - v_data tüübiga - string


vektor < string > v_andmed ;

string oli ;

// Loe failist data.txt järgmine rida
// kuni jõuab lõpuni.


samal ajal ( faili >> oli ) {

// Lugege järgmist rida ja sisestage v_data

v_andmed. lükka tagasi ( oli ) ;

}



// Kuvab real oleva rea ​​eraldi.

kopeerida ( v_andmed. alustada ( ) , v_data. lõpp ( ) , ostream_iterator < string > ( cout , ' \n ' ) ) ;

}

Väljund:

Näeme, et 'v_data' sisaldab viit failist pärit elementi.

Järeldus

Selles pikas artiklis uurisime kõiki võimalikke näiteid, mida kasutatakse C++ programmeerimiskeele vektoritega seotud reaalajas rakendustes. Iga näidet selgitatakse süntaksi, parameetrite ja väljundiga. Koodi selgeks mõistmiseks lisatakse igale koodile kommentaarid.