C ++ je jeden z najsilnejších a najstrašidelnejších programovacích jazykov, s ktorými sa môžete ako začiatočníci stretnúť. Dôvod je dosť priamy. Na dosiahnutie požadovaného výstupu vyžaduje veľa kódu. Táto knižná hádanka vám môže pomôcť štandardná knižnica šablón alebo STL.

Vzhľadom na množstvo času a úsilia vynaloženého pri písaní kódu na funkcie, ako je triedenie a vyhľadávanie, vám STL môže pomôcť vykonať všetky tieto operácie iba s jedným riadkom kódu. Táto knižnica môže byť nesmierne užitočná na riešenie problémov a prípravu technických rozhovorov.

Čo je štandardná knižnica šablón?

Knižnica štandardných šablón alebo STL je knižnica C ++, ktorá pozostáva z vopred pripravených funkcií a kontajnerov. Zahŕňa niektoré prominentné triedy šablón pre bežné dátové štruktúry, ako sú vektory, komíny, fronty a niektoré užitočné algoritmické funkcie, ako je binárne vyhľadávanie, ktoré uľahčujú programovanie.

Knižnica štandardných šablón v C ++ sa skladá zo štyroch komponentov:

  1. Algoritmy
  2. Kontajnery
  3. Funkcie
  4. Iterátory
instagram viewer

Poďme sa pozrieť na algoritmy a kontajnery vo väčšej hĺbke, pretože ide o najbežnejšie používané komponenty STL.

Algoritmy v STK

The hlavičkový súbor je časť STK, ktorá pozostáva z niekoľkých algoritmických funkcií, ktoré možno použiť namiesto ich manuálneho kódovania. Niektoré zo zahrnutých algoritmov sú binárne vyhľadávanie, triedenie a obrátenie, ktoré sú mimoriadne užitočné.

Najskôr je potrebné importovať hlavičku vo vašom súbore C ++. Syntax je nasledovná:

#include 

Pri nasledujúcich metódach zvážte ako príklad premennú poľa s hodnotami {6, 2, 9, 1, 4}.

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

sort ()

The sort () Funkcia pomáha triediť všetky prvky vo vnútri zadanej dátovej štruktúry vzostupne. Táto funkcia má dva parametre: počiatočný iterátor a konečný iterátor.

Súvisiace: Úvod do algoritmu zoraďovania zlúčenia

Syntax:

sort (start_iterator, end_iterator);

Tu je rýchly príklad:

triediť (arr, arr + 5);
pre (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Výkon:

1 2 4 6 9

reverz ()

The reverz () funkcia obráti poradie prvkov v určenej dátovej štruktúre. Prijíma dva parametre: počiatočný iterátor a koncový iterátor.

Syntax:

reverz (start_iterator, end_iterator);

Tu je krátky príklad vyššie uvedenej metódy:

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

Výkon:

4 1 9 2 6

* min_element () a * max_element ()

Funkcie * max_element () a * min_element () vráti maximálnu a minimálnu hodnotu vo vnútri špecifikovanej dátovej štruktúry. Obe tieto funkcie prijímajú dva argumenty: počiatočný iterátor a konečný iterátor.

Syntax:

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

Poďme zistiť, aké hodnoty tieto funkcie vracajú po ich vyvolaní na príklade poľa:

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

Výkon:

9
1

binary_search ()

The binary_search () metóda sa používa na zistenie, či sa zadaná hodnota nachádza vo vnútri dátovej štruktúry alebo nie. Prijíma tri argumenty: počiatočný iterátor, koncový iterátor a hodnotu, ktorú chcete nájsť.

Binárne vyhľadávanie funguje iba na triedených dátových štruktúrach. Preto budete musieť zavolať na sort () metóda najskôr pred binary_search () metóda.

Syntax:

binary_search (start_iterator, end_iterator, value_to_find)

Tu je ukážka tejto metódy:

triediť (arr, arr + 5);
binary_search (arr, arr + 5, 2)? cout << "Element nájdený": cout << "Element nebol nájdený";
binary_search (arr, arr + 5, 7)? cout << "Element nájdený": cout << "Element nebol nájdený";

Výkon:

Element sa našiel
Prvok sa nenašiel

count ()

The count () metóda vráti počet výskytov zadanej hodnoty vo vnútri dátovej štruktúry. Trvá to tri argumenty: začiatočný iterátor, konečný iterátor a hodnota, ktorá sa má spočítať.

Syntax:

count (start_iterator, end_iterator, value_to_count);

Tu je príklad tejto metódy:

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

Výkon:

1

Kontajnery v STL

Kontajnery sú dátové štruktúry, ktoré ukladajú objekty a dáta. Vektory, zoznamy, komíny, fronty, množiny a mapy sú niektoré z príkladov, ktoré do nich ukladajú údaje podľa zadaného primitívneho údajového typu. Tieto kontajnery môžete použiť importom ich príslušných hlavičiek do súboru C ++.

Pri inicializácii premennej kontajnera musíte spomenúť primitívne údaje ako napr int, char, struna vnútri <> zátvorky.

Pozrime sa podrobnejšie na niektoré z týchto kontajnerov:

Vektor

Vektory sú dynamické polia, ktoré je možné meniť a meniť s nimi flexibilitu. Keď vložíte alebo odstránite prvok z vektora, automaticky sa upraví jeho veľkosť. Je to podobné ako v prípade Dátová štruktúra ArrayList v Jave.

Syntax:

#include 
vektor nazov premennej;

Tu uvádzame niektoré dôležité vektorové metódy:

  1. push_back (hodnota): Táto metóda pripojí údaje k vektoru.
  2. pop_back (): Táto metóda odstráni posledný prvok z vektora.
  3. vložiť (index, hodnota): Táto metóda vloží nové prvky pred prvok na určenej pozícii.
  4. veľkosť (): Táto metóda vráti veľkosť vektora.
  5. prázdne (): Táto metóda kontroluje, či je vektor prázdny alebo nie.
  6. predné (): Táto metóda vráti prvú hodnotu vektora.
  7. späť(): Metóda späť vráti poslednú hodnotu vektora.
  8. o (index): Táto metóda vráti hodnotu na zadanej pozícii.
  9. vymazať (index): Metóda mazania odstráni prvky z daného indexu.
  10. jasný(): Táto metóda vymaže všetky položky vo vektore.
vektor  v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
auto i = v.inzert (v.begin () + 1, 7);
cout << "Veľkosť daného vektoru" << v.size () << endl;
if (v.empty ()) {
cout << "Vektor je prazdny" << endl;
} else {
cout << "Vektor nie je prazdny" << endl;
}
cout << "Prvok na prvej pozícii je" << v.front () << endl;
cout << "Prvok na poslednej pozícii je" << v.back () << endl;
cout << "Prvok na danej pozícii je" << v.at (4) << endl;
v.erase (v.begin () + 1);
pre (int i = 0; i cout << v [i] << "";
}

Výkon:

Veľkosť daného vektora 6
Vektor nie je prázdny
Prvok na prvej pozícii je 23
Prvok na poslednej pozícii je 5
Element na danej pozícii je 10
23 12 56 10 5

Fronta

V štruktúre údajov o fronte sú prvky vkladané zozadu a mazané spredu. Preto sa riadi prístupom FIFO („prvý dovnútra, prvý von“).

Syntax:

#include 
poradie nazov premennej;

Tu uvádzam niekoľko dôležitých metód radenia:

  1. push (hodnota): Táto metóda pridáva prvky do frontu.
  2. pop (): Táto metóda odstráni prvý prvok vo fronte.
  3. veľkosť (): Táto metóda vráti veľkosť frontu.
  4. predné (): Táto metóda vráti prvý prvok vo fronte.
  5. späť(): Táto metóda vráti posledný prvok vo fronte.
poradie  q;
q. stlačiť (30);
q. stlačenie (40);
q. stlačenie (50);
q. stlačenie (60);
q. stlačenie (70);
cout << "Prvý prvok je" << q.front () << endl;
cout << "Posledný prvok je" << q.back () << endl;
cout << "Veľkosť frontu je" << q.size () << endl;
q.pop ();
cout << "Tlač všetkých prvkov frontu" << endl;
while (! q.empty ()) {
cout << q.front () << "";
q.pop ();
}

Výkon:

Prvý prvok je 30
Posledný prvok je 70
Veľkosť frontu je 5
Tlač všetkých prvkov frontu
40 50 60 70

Stoh

Stohovacie kontajnery pracujú metódou LIFO. LIFO znamená „posledný dovnútra, prvý von“. Údaje sa tlačia a vyskakujú z rovnakého konca.

Syntax:

#include 
stoh nazov premennej;

Tu je niekoľko dôležitých metód zásobníka:

  1. push (hodnota): Táto metóda posúva prvok do zásobníka.
  2. pop (): Táto metóda odstráni horný prvok zásobníka.
  3. hore (): Táto metóda vráti hodnotu posledného prvku zadaného do zásobníka.
  4. veľkosť (): Táto metóda vráti veľkosť stohu.
  5. prázdne (): Táto metóda kontroluje, či je zásobník prázdny alebo nie.
stack  s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "Horná časť stohu obsahuje" << s.top () << endl;
s.pop ();
cout << "Horná časť zásobníka po vykonaní popovej operácie:" << s.top () << endl;
cout << "Tlač všetkých prvkov zásobníka" << endl;
while (! s.empty ()) {
cout << s.top () << "";
s.pop ();
}

Výkon:

Horná časť stohu obsahuje 60
Horná časť stohu po vykonaní popovej operácie: 50
Tlač všetkých prvkov stohu
50 40 30

Nastaviť

Kontajnery množiny sa používajú na uchovanie jedinečných hodnôt a hodnotu prvku nie je možné zmeniť, akonáhle je vložený do množiny. Všetky prvky v množine sú uložené triedeným spôsobom. Nastavená nádoba je podobná nastaviť dátovú štruktúru v Pythone.

Syntax:

#include 
nastaviť nazov premennej;

Tu je niekoľko dôležitých metód nastavenia:

  1. vložiť (hodnota): Táto metóda vloží prvky do množiny.
  2. začať(): Táto metóda vráti iterátor na prvý prvok množiny.
  3. koniec(): Táto metóda vráti iterátor na posledný prvok množiny.
  4. veľkosť (): Táto metóda vráti veľkosť súpravy.
  5. prázdne (): Táto metóda kontroluje, či je množina prázdna alebo nie.
  6. nájsť (hodnota): Táto metóda vráti iterátor na prvok odovzdaný v parametri. Ak sa prvok nenájde, vráti táto funkcia iterátor na koniec množiny.
  7. vymazať (hodnota): Táto metóda odstránila zadaný prvok z množiny.
množina  s;
s.zložka (20);
s.vloženie (30);
s.vložka (40);
s.vloženie (50);
s.vloženie (60);
s.vloženie (60);
s.vloženie (60);
auto i = s.begin ();
cout << "Element na prvej pozícii" << * i << endl;
cout << "Veľkosť sady" << s.size () << endl;
s.find (20)! = s.end ()? cout << "Element nájdený" << endl: cout << "Element nebol nájdený" << endl;
s.eráza (30);
cout << "Tlač všetkých prvkov" << endl;
pre (auto i = s.begin (); i! = s.end (); i ++) {
cout << * i << "";
}

Výkon:

Prvok na prvej pozícii 20
Veľkosť súpravy 5
Element sa našiel
Tlač všetkých prvkov
20 40 50 60

C ++ nemusí byť ťažké

Rovnako ako všetky ostatné zručnosti, aj prax je nevyhnutná, aby ste STK využili čo najlepšie. Tieto kontajnery a algoritmy vám pomôžu ušetriť veľa času a ľahko sa používajú. Začnite cvičením príkladov uvedených vyššie a nakoniec ich začnete používať aj vo svojich vlastných projektoch.

Ak sa však C ++ učíte prvýkrát, najskôr sa osvojte základy, až potom pochopíte STL.

Email
Ako sa naučiť programovať v C ++: 6 stránok, ako začať

Chcete sa naučiť C ++? Tu sú najlepšie webové stránky a online kurzy pre C ++ pre začiatočníkov i skúsených programátorov.

Prečítajte si Ďalej

Súvisiace témy
  • Programovanie
  • Výukové programy pre kódovanie
  • Funkčné programovanie
O autorovi
Nitin Ranganath (22 publikovaných článkov)

Nitin je vášnivým vývojárom softvéru a študentom počítačového inžinierstva vyvíjajúcim webové aplikácie pomocou technológií JavaScript. Pracuje ako webový vývojár na voľnej nohe a vo voľnom čase rád píše pre Linux a programovanie.

Viac od Nitina Ranganatha

Prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu s technickými tipmi, recenziami, bezplatnými elektronickými knihami a exkluzívnymi ponukami!

Ešte jeden krok…!

V e-maile, ktorý sme vám práve poslali, potvrďte svoju e-mailovú adresu.

.