C ++ on üks võimsamaid ja hirmutavamaid programmeerimiskeeli, millega võite algajana kokku puutuda. Põhjus on üsna sirge. Soovitud väljundi saavutamiseks on vaja palju koodi. Selle murede lahendamisel võib abi olla tavaline mallide teek ehk STL.

Arvestades aja ja vaeva kulumist koodi kirjutamisel selliste funktsioonide jaoks nagu sortimine ja otsimine, aitab STL teil kõiki neid toiminguid teha ainult ühe koodireaga. See teek võib olla tohutult kasulik probleemide lahendamisel ja tehniliste intervjuude ettevalmistamisel.

Mis on standardne mallide kogu?

Standardmallide kogu ehk STL on C ++ teek, mis koosneb eeltoodud funktsioonidest ja konteineritest. See sisaldab programmeerimise hõlbustamiseks mõningaid silmatorkavaid malliklasse tavaliste andmestruktuuride jaoks, nagu vektorid, virnad, järjekorrad ja mõned käepärased algoritmifunktsioonid, nagu kahendotsing.

Standardmallide kogu C ++ sisaldab nelja komponenti:

  1. Algoritmid
  2. Konteinerid
  3. Funktsioonid
  4. Iteraatorid

Vaatame algoritme ja konteinereid põhjalikumalt, kuna need on STL-i kõige sagedamini kasutatavad komponendid.

instagram viewer

Algoritmid STL-is

The päisefail on STL-i osa, mis koosneb mitmest algoritmifunktsioonist, mida saab kasutada nende käsitsi kodeerimise asemel. Mõned kaasatud algoritmid on kahendotsing, sortimine ja tagasikäik, mis on äärmiselt kasulikud.

Alustuseks peate importima päises oma C ++ failis. Süntaks on järgmine:

# kaasata 

Tulevaste meetodite puhul võtke näiteks massiivimuutuja väärtusega {6, 2, 9, 1, 4}.

int arr [] = {6, 2, 9, 1, 4};

sort ()

The sort () Funktsioon aitab teil kõik määratud andmestruktuuris olevad elemendid kasvavas järjekorras sortida. Sellel funktsioonil on kaks parameetrit: algus iteraator ja lõpp iteraator.

Seotud: Sissejuhatus ühendamise sortimise algoritmi

Süntaks:

sorteerimine (algus_kirjutaja, lõpp-lugeja);

Siin on kiire näide:

sort (arr, arr + 5);
for (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Väljund:

1 2 4 6 9

tagurpidi()

The tagurpidi() funktsioon muudab määratud andmestruktuuris elementide järjekorra. See aktsepteerib kahte parameetrit: algus iteraator ja lõpp iteraator.

Süntaks:

tagurpidi (alguse_kirjutaja, lõppu_kirjutaja);

Siin on ülaltoodud meetodi lühike näide:

tagurpidi (arr, arr + 5);
for (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Väljund:

4 1 9 2 6

* min_element () ja * max_element ()

Funktsioonid * max_element () ja * min_element () tagastab vastavalt maksimaalse ja minimaalse väärtuse määratud andmestruktuuris. Mõlemad funktsioonid aktsepteerivad kahte argumenti: algus iteraator ja lõpp iteraator.

Süntaks:

* max_element (alguse_kirjutaja, lõppu_kirjutaja);
* min_element (alguse_kirjutaja, lõppu_kirjutaja);

Uurime, millised väärtused need funktsioonid tagastavad, kui kutsute neid näite massiivi:

cout << * max_element (arr, arr + 5) << endl;
cout << * min_element (arr, arr + 5) << endl;

Väljund:

9
1

binary_search ()

The binary_search () meetodit kasutatakse selleks, et leida, kas määratud väärtus on andmestruktuuris sees või mitte. See aktsepteerib kolme argumenti: algus iteraator, lõpp iteraator ja väärtus, mille soovite leida.

Binaarotsing töötab ainult sorteeritud andmestruktuuridel. Seetõttu peate helistama sort () meetod enne binary_search () meetod.

Süntaks:

binaarne_otsing (alguse_kirjutaja, lõppu_kirjutaja, väärtuse_leidmiseks)

Siin on selle meetodi tutvustus:

sort (arr, arr + 5);
binaarne_otsing (arr, arr + 5, 2)? cout << "Element leitud": cout << "Elementi ei leitud";
binaarne_otsing (arr, arr + 5, 7)? cout << "Element leitud": cout << "Elementi ei leitud";

Väljund:

Element leitud
Elementi ei leitud

loenda ()

The loenda () meetod tagastab andmestruktuuris määratud väärtuse esinemiste arvu. Selleks on vaja kolme argumenti: algus iteraator, lõpp iteraator ja loendatav väärtus.

Süntaks:

loendama (algus_kirjutaja, lõpp-lugeja, väärtus_arvuni);

Siin on selle meetodi näide:

cout << arv (arr, arr + 5, 2) << endl;

Väljund:

1

Konteinerid STL-is

Konteinerid on andmestruktuurid, mis talletavad objekte ja andmeid. Vektorid, loendid, korstnad, järjekorrad, komplektid ja kaardid on mõned näited, mis talletavad nendes andmeid vastavalt määratud primitiivsele andmetüübile. Neid konteinereid saate kasutada, importides nende vastavad päised faili C ++.

Konteinerimuutuja lähtestamise ajal peate mainima primitiivseid andmeid nagu int, char, string sees <> sulgudes.

Uurime mõnda neist mahutitest üksikasjalikumalt:

Vektor

Vektorid on dünaamilised massiivid, mille suurust saab muuta ja millega paindlikult töötada. Kui sisestate või kustutate elemendi vektorist, reguleerib see automaatselt vektori suurust. See sarnaneb ArrayList andmete struktuur Java keeles.

Süntaks:

# kaasata 
vektor muutuja_nimi;

Siin on mõned olulised vektormeetodid:

  1. push_back (väärtus): See meetod liidab andmed vektoriga.
  2. pop_back (): See meetod eemaldab vektorist viimase elemendi.
  3. sisesta (indeks, väärtus): See meetod lisab uued elemendid enne määratud asukohta olevat elementi.
  4. suurus (): See meetod tagastab vektori suuruse.
  5. tühi(): See meetod kontrollib, kas vektor on tühi või mitte.
  6. ees (): See meetod tagastab vektori esimese väärtuse.
  7. tagasi(): Meetod Tagasi tagastab vektori viimase väärtuse.
  8. juures (register): See meetod tagastab määratud positsiooni väärtuse.
  9. kustuta (register): Kustutusmeetod eemaldab antud indeksist elemendid.
  10. selge (): See meetod kustutab kõik vektoris olevad üksused.
vektor  v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
auto i = v. sisestamine (v. algus () + 1, 7);
cout << "Antud vektori suurus" << v.size () << endl;
kui (v. tühi ()) {
cout << "Vektor on tühi" << endl;
} muu {
cout << "Vektor pole tühi" << endl;
}
cout << "Element esimesel positsioonil on" << v.front () << endl;
cout << "Element viimasel positsioonil on" << v.back () << endl;
cout << "Element antud positsioonil on" << v.at (4) << endl;
v.erase (v.begin () + 1);
for (int i = 0; i cout << v [i] << "";
}

Väljund:

Antud vektori suurus 6
Vektor pole tühi
Esimesel positsioonil on element 23
Element viimasel positsioonil on 5
Element antud positsioonil on 10
23 12 56 10 5

Järjekord

Järjekorra andmestruktuuris sisestatakse elemendid tagantpoolt ja kustutatakse eestpoolt. Seega järgib see FIFO ("esimene sisse, esimene välja") lähenemisviisi.

Süntaks:

# kaasata 
järjekorda muutuja_nimi;

Siin on mõned olulised järjekorrameetodid:

  1. push (väärtus): See meetod lisab järjekorda elemente.
  2. pop (): See meetod kustutab järjekorra esimese elemendi.
  3. suurus (): See meetod tagastab järjekorra suuruse.
  4. ees (): See meetod tagastab järjekorra esimese elemendi.
  5. tagasi(): See meetod tagastab järjekorra viimase elemendi.
järjekord  q;
q.push (30);
q.push (40);
q.push (50);
q.push (60);
q.push (70);
cout << "Esimene element on" << q.front () << endl;
cout << "Viimane element on" << q.back () << endl;
cout << "Järjekorra suurus on" << q.size () << endl;
q.pop ();
cout << "Järjekorra kõigi elementide printimine" << endl;
samas (! q.tühi ()) {
cout << q.front () << "";
q.pop ();
}

Väljund:

Esimene element on 30
Viimane element on 70
Järjekorra suurus on 5
Kõigi järjekorra elementide printimine
40 50 60 70

Virn

Virna konteinerid töötavad LIFO meetodil. LIFO tähendab "viimane sisse, esimene välja". Andmeid lükatakse ja hüpatakse samast otsast.

Süntaks:

# kaasata 
virn muutuja_nimi;

Siin on mõned olulised virnameetodid:

  1. push (väärtus): See meetod surub elemendi virna.
  2. pop (): See meetod kustutab virna ülemise elemendi.
  3. üles (): See meetod tagastab virna viimati sisestatud elemendi väärtuse.
  4. suurus (): See meetod tagastab virna suuruse.
  5. tühi(): See meetod kontrollib, kas virn on tühi või mitte.
virn  s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "Virna ülaosa sisaldab" << s.top () << endl;
s.pop ();
cout << "Virna ülaosa pärast popoperatsiooni tegemist:" << s.top () << endl;
cout << "Virna kõigi elementide printimine" << endl;
samas (! s.tühi ()) {
cout << s.top () << "";
s.pop ();
}

Väljund:

Virna ülaosa sisaldab 60
Virna ülaosa pärast popoperatsiooni sooritamist: 50
Virna kõigi elementide printimine
50 40 30

Määra

Komplekti konteinereid kasutatakse unikaalsete väärtuste hoidmiseks ja elemendi väärtust ei saa pärast komplekti sisestamist muuta. Kõik komplekti elemendid salvestatakse sorteeritult. Komplektis olev konteiner sarnaneb määrata Pythonis andmestruktuur.

Süntaks:

# kaasata 
seatud muutuja_nimi;

Siin on mõned olulised komplektmeetodid:

  1. sisesta (väärtus): See meetod sisestab komplekti elemendid.
  2. algama (): See meetod tagastab iteraatori hulga esimesele elemendile.
  3. lõpp(): See meetod tagastab iteraatori hulga viimasele elemendile.
  4. suurus (): See meetod tagastab hulga suuruse.
  5. tühi(): See meetod kontrollib, kas komplekt on tühi või mitte.
  6. leidma (väärtus): See meetod tagastab iteraatori parameetris edastatud elemendile. Kui elementi ei leita, tagastab see funktsioon iteraatori hulga lõppu.
  7. kustuta (väärtus): See meetod kustutas määratud elemendi komplektist.
seatud  s;
s. sisestage (20);
s.insert (30);
s.sisend (40);
s.sisend (50);
s.sisend (60);
s.sisend (60);
s.sisend (60);
auto i = s. algus ();
cout << "Element esimesel positsioonil" << * i << endl;
cout << "Komplekti suurus" << s.size () << endl;
s.leidke (20)! = s.end ()? cout << "Element leitud" << endl: cout << "Elementi ei leitud" << endl;
s.erase (30);
cout << "Kõigi elementide printimine" << endl;
for (auto i = s. algus (); i! = s.end (); i ++) {
cout << * i << "";
}

Väljund:

Element esimesel positsioonil 20
Komplekti suurus 5
Element leitud
Kõigi elementide printimine
20 40 50 60

C ++ ei pea olema raske

Nagu iga teine ​​oskus, on ka STL-i maksimaalseks kasutamiseks vajalik harjutamine. Need konteinerid ja algoritmid aitavad teil palju aega kokku hoida ja neid on lihtne kasutada. Alustage ülaltoodud näidete harjutamisest ja hakkate seda lõpuks ka oma projektides kasutama.

Kui aga õpite esimest korda C ++ keelt, õppige enne STL-i mõistmist põhitõdede õppimist.

E-post
Kuidas õppida C ++ programmeerimist: alustamiseks 6 saiti

Kas soovite õppida C ++? Siin on parimad C ++ veebisaidid ja veebikursused nii algajatele kui ka kogemustega programmeerijatele.

Loe edasi

Seotud teemad
  • Programmeerimine
  • Kodeerimise õpetused
  • Funktsionaalne programmeerimine
Autori kohta
Nitin Ranganath (22 artiklit on avaldatud)

Nitin on innukas tarkvaraarendaja ja arvutitehnika eriala üliõpilane, kes töötab JavaScripti tehnoloogiaid kasutades veebirakendusi. Ta töötab vabakutselise veebiarendajana ning talle meeldib vabal ajal kirjutada Linuxi ja programmeerimise jaoks.

Veel Nitin Ranganathilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, kus leiate tehnilisi näpunäiteid, ülevaateid, tasuta e-raamatuid ja eksklusiivseid pakkumisi!

Veel üks samm !!!

Palun kinnitage oma e-posti aadress meilis, mille me just saatsime.

.