C ++ je eden najmočnejših in zastrašujočih programskih jezikov, s katerim se lahko srečate kot začetnik. Razlog je precej preprost. Za dosego želenega izhoda zahteva veliko kode. Standardna knjižnica predlog ali STL vam lahko pomaga rešiti to zagate.

Glede na količino časa in napora, porabljenega za pisanje kode za funkcije, kot sta razvrščanje in iskanje, vam lahko STL pomaga pri izvajanju vseh teh operacij z eno samo vrstico kode. Ta knjižnica je lahko izjemno koristna za reševanje problemov in pripravo tehničnih razgovorov.

Kaj je standardna knjižnica predlog?

Standardna knjižnica predlog ali STL je knjižnica C ++, ki je sestavljena iz vnaprej vgrajenih funkcij in vsebnikov. Vključuje nekaj vidnih razredov predlog za običajne podatkovne strukture, kot so vektorji, skladi, čakalne vrste in nekatere priročne algoritmične funkcije, kot je binarno iskanje, za lažje programiranje.

Standardna knjižnica predlog v jeziku C ++ je sestavljena iz štirih komponent:

  1. Algoritmi
  2. Zabojniki
  3. Funkcije
  4. Iteratorji
instagram viewer

Oglejmo si algoritme in vsebnike poglobljeno, saj so to najpogosteje uporabljeni sestavni deli STL.

Algoritmi v STL

The Datoteka glave je del STL, ki je sestavljen iz več algoritemskih funkcij, ki jih je mogoče uporabiti namesto ročnega kodiranja. Nekateri vključeni algoritmi so binarno iskanje, razvrščanje in obračanje, ki so izjemno koristni.

Za začetek morate uvoziti datoteko glavo v datoteki C ++. Sintaksa je naslednja:

#include 

Za prihajajoče metode si oglejte na primer spremenljivko matrike z vrednostmi {6, 2, 9, 1, 4}.

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

razvrsti ()

The razvrsti () Funkcija vam pomaga razvrstiti vse elemente znotraj navedene podatkovne strukture v naraščajočem vrstnem redu. Ta funkcija ima dva parametra: začetni in končni iterator.

Sorodno: Uvod v algoritem sortiranja spajanja

Sintaksa:

razvrsti (start_iterator, end_iterator);

Tu je hiter primer:

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

Izhod:

1 2 4 6 9

vzvratno ()

The vzvratno () funkcija obrne vrstni red elementov v navedeni podatkovni strukturi. Sprejema dva parametra: začetni in končni iterator.

Sintaksa:

vzvratno (start_iterator, end_iterator);

Tu je kratek primer zgornje metode:

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

Izhod:

4 1 9 2 6

* min_element () in * max_element ()

Funkcije * max_element () in * min_element () vrne največjo in najmanjšo vrednost znotraj podane podatkovne strukture. Obe funkciji sprejmeta dva argumenta: začetni in končni iterator.

Sintaksa:

* max_element (start_iterator, end_iterator);
* min_element (start_iterator, end_iterator);

Ugotovimo, katere vrednosti te funkcije vrnejo, ko jih pokličejo v primeru matrike:

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

Izhod:

9
1

binarno_izvajanje ()

The binarno_izvajanje () metoda se uporablja za ugotavljanje, ali je navedena vrednost prisotna znotraj podatkovne strukture ali ne. Sprejema tri argumente: začetni iterator, končni iterator in vrednost, ki jo želite najti.

Binarno iskanje deluje samo na razvrščenih podatkovnih strukturah. Zato boste morali poklicati razvrsti () metoda najprej pred binarno_izvajanje () metoda.

Sintaksa:

binarno_izvajanje (start_iterator, end_iterator, value_to_find)

Tu je predstavitev te metode:

razvrsti (arr, arr + 5);
binarno_izvajanje (arr, arr + 5, 2)? cout << "Element najden": cout << "Element ni najden";
binarno_izvajanje (arr, arr + 5, 7)? cout << "Element najden": cout << "Element ni najden";

Izhod:

Element najden
Elementa ni mogoče najti

štetje ()

The štetje () metoda vrne število pojavitev določene vrednosti znotraj podatkovne strukture. Potrebni so trije argumenti: začetni iterator, končni iterator in vrednost za štetje.

Sintaksa:

štetje (start_iterator, end_iterator, value_to_count);

Tu je primer te metode:

cout << štetje (arr, arr + 5, 2) << endl;

Izhod:

1

Zabojniki v STL

Vsebniki so podatkovne strukture, ki shranjujejo predmete in podatke. Vektorji, seznami, skladi, čakalne vrste, nizi in zemljevidi so nekateri primeri, ki vanje shranjujejo podatke glede na določen primitivni tip podatkov. Te vsebnike lahko uporabite tako, da v datoteko C ++ uvozite njihove ustrezne glave.

Med inicializacijo spremenljivke vsebnika morate omeniti primitivne podatke, kot je int, char, vrvica znotraj <> oklepaji.

Oglejmo si nekaj teh vsebnikov podrobneje:

Vektor

Vektorji so dinamična polja, ki jih je mogoče spreminjati in prilagoditi za delo. Ko element vstavite ali izbrišete iz vektorja, samodejno prilagodi njegovo velikost. To je podobno ArrayList podatkovna struktura v Javi.

Sintaksa:

#include 
vektor ime_premenljivke;

Tu je nekaj pomembnih vektorskih metod:

  1. push_back (vrednost): Ta metoda doda podatke vektorju.
  2. pop_back (): Ta metoda odstrani zadnji element iz vektorja.
  3. vstavi (indeks, vrednost): Ta metoda vstavi nove elemente pred element na določenem položaju.
  4. velikost (): Ta metoda vrne velikost vektorja.
  5. prazno(): Ta metoda preveri, ali je vektor prazen ali ne.
  6. spredaj (): Ta metoda vrne prvo vrednost vektorja.
  7. nazaj (): Metoda nazaj vrne zadnjo vrednost vektorja.
  8. at (indeks): Ta metoda vrne vrednost na določenem položaju.
  9. izbriši (indeks): Metoda brisanja odstrani elemente iz danega indeksa.
  10. jasno (): Ta metoda izbriše vse elemente v vektorju.
vektor  v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
samodejno i = v.insert (v.begin () + 1, 7);
cout << "Velikost danega vektorja" << v.size () << endl;
if (v.empty ()) {
cout << "Vektor je prazen" << endl;
} še {
cout << "Vektor ni prazen" << endl;
}
cout << "Element na prvem mestu je" << v.front () << endl;
cout << "Element na zadnji poziciji je" << v.back () << endl;
cout << "Element na danem položaju je" << v.at (4) << endl;
v.erase (v.begin () + 1);
za (int i = 0; i cout << v [i] << "";
}

Izhod:

Velikost danega vektorja 6
Vektor ni prazen
Element na prvem mestu je 23
Element na zadnjem mestu je 5
Element na danem položaju je 10
23 12 56 10 5

Čakalna vrsta

V strukturi podatkov o čakalni vrsti se elementi vstavijo od zadaj in izbrišejo od spredaj. Zato sledi pristopu FIFO ("prvi vstop, prvi izstop").

Sintaksa:

#include 
čakalna vrsta ime_premenljivke;

Tu je nekaj pomembnih metod čakalne vrste:

  1. push (vrednost): Ta metoda doda elemente v čakalno vrsto.
  2. pop (): Ta metoda izbriše prvi element čakalne vrste.
  3. velikost (): Ta metoda vrne velikost čakalne vrste.
  4. spredaj (): Ta metoda vrne prvi element čakalne vrste.
  5. nazaj (): Ta metoda vrne zadnji element čakalne vrste.
čakalna vrsta  q;
q.potisk (30);
q.potisk (40);
q.potisk (50);
q.potisk (60);
q.potisk (70);
cout << "Prvi element je" << q.front () << endl;
cout << "Zadnji element je" << q.back () << endl;
cout << "Velikost čakalne vrste je" << q.size () << endl;
q.pop ();
cout << "Tiskanje vseh elementov čakalne vrste" << endl;
while (! q.empty ()) {
cout << q.front () << "";
q.pop ();
}

Izhod:

Prvi element je 30
Zadnji element je 70
Velikost čakalne vrste je 5
Tiskanje vseh elementov čakalne vrste
40 50 60 70

Stack

Posode za skladiščenje delujejo po metodi LIFO. LIFO pomeni "zadnji vstop, prvi izstop". Podatki se potiskajo in pojavljajo z istega konca.

Sintaksa:

#include 
sklad ime_premenljivke;

Tu je nekaj pomembnih metod sklada:

  1. push (vrednost): Ta metoda potisne element v sklad.
  2. pop (): Ta metoda izbriše zgornji element sklada.
  3. zgoraj (): Ta metoda vrne vrednost zadnjega elementa, vnesenega v sklad.
  4. velikost (): Ta metoda vrne velikost sklada.
  5. prazno(): Ta metoda preverja, ali je sklad prazen ali ne.
sklad  s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "Na vrhu sklada je" << s.top () << endl;
s.pop ();
cout << "Vrh sklada po izvedbi pop operacije:" << s.top () << endl;
cout << "Tiskanje vseh elementov sklada" << endl;
while (! s.empty ()) {
cout << s.top () << "";
s.pop ();
}

Izhod:

Na vrhu sklada je 60
Vrh sklada po izvedbi pop operacije: 50
Tiskanje vseh elementov sklada
50 40 30

Nastavite

Vsebniki z nastavki se uporabljajo za shranjevanje edinstvenih vrednosti in vrednosti elementa ni mogoče spremeniti, ko je vstavljen v niz. Vsi elementi v naboru so shranjeni na razvrščen način. Nastavljeni vsebnik je podoben nastavite strukturo podatkov v Pythonu.

Sintaksa:

#include 
nastavite ime_premenljivke;

Tu je nekaj pomembnih metod:

  1. vstavi (vrednost): Ta metoda vstavi elemente v nabor.
  2. začeti(): Ta metoda vrne iterator v prvi element nabora.
  3. konec (): Ta metoda vrne iterator v zadnji element niza.
  4. velikost (): Ta metoda vrne velikost nabora.
  5. prazno(): Ta metoda preverja, ali je nabor prazen ali ne.
  6. najdi (vrednost): Ta metoda vrne iterator elementu, posredovanemu v parametru. Če elementa ne najdemo, ta funkcija vrne iterator na konec niza.
  7. izbriši (vrednost): Ta metoda je izbrala določeni element iz niza.
set  s;
s.vstavka (20);
s.vstavka (30);
s.vstavka (40);
s.vstavka (50);
s.vstavka (60);
s.vstavka (60);
s.vstavka (60);
samodejno i = s.begin ();
cout << "Element na prvem mestu" << * i << endl;
cout << "Velikost kompleta" << s.size () << endl;
s.find (20)! = s.end ()? cout << "Element najden" << endl: cout << "Elementa ni mogoče najti" << endl;
s.erase (30);
cout << "Tiskanje vseh elementov" << endl;
za (auto i = s.begin (); i! = s.end (); i ++) {
cout << * i << "";
}

Izhod:

Element na prvem mestu 20
Velikost kompleta 5
Element najden
Tiskanje vseh elementov
20 40 50 60

C ++ ni treba biti trda

Kot vsaka druga veščina je tudi vaja bistvenega pomena, da kar najbolje izkoristite STL. Ti vsebniki in algoritmi vam lahko pomagajo prihraniti veliko časa in so enostavni za uporabo. Začnite z vadbo zgoraj prikazanih primerov in sčasoma ga boste začeli uporabljati tudi v svojih projektih.

Če pa se prvič učite C ++, najprej začnite z učenjem osnov, preden začnete razumeti STL.

E-naslov
Kako se naučiti programiranja na C ++: 6 mest za začetek

Se želite naučiti C ++? Tu so najboljša spletna mesta in spletni tečaji za C ++ za začetnike in izkušene programerje.

Preberite Naprej

Sorodne teme
  • Programiranje
  • Vadnice za kodiranje
  • Funkcionalno programiranje
O avtorju
Nitin Ranganath (22 objavljenih člankov)

Nitin je navdušen razvijalec programske opreme in študent računalniškega inženiringa, ki razvija spletne aplikacije z uporabo tehnologij JavaScript. Deluje kot samostojni spletni razvijalec in v prostem času rad piše za Linux in programiranje.

Več od Nitin Ranganath

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, preglede, brezplačne e-knjige in ekskluzivne ponudbe!

Še en korak…!

Potrdite svoj e-poštni naslov v e-pošti, ki smo vam jo pravkar poslali.

.