C ++ je jedním z nejmocnějších a nejstrašidelnějších programovacích jazyků, se kterými se jako začátečník můžete setkat. Důvod je docela jasný. K dosažení požadovaného výstupu vyžaduje spoustu kódu. Standardní knihovna šablon nebo STL vám může pomoci vyřešit tento hlavolam.

Vzhledem k množství času a úsilí spotřebovaného při psaní kódu pro funkce, jako je třídění a hledání, vám STL pomůže provést všechny tyto operace pouze s jediným řádkem kódu. Tato knihovna může být nesmírně užitečná pro řešení problémů a technickou přípravu rozhovorů.

Co je standardní knihovna šablon?

Standardní knihovna šablon, nebo STL, je knihovna C ++, která se skládá z předem připravených funkcí a kontejnerů. Zahrnuje některé prominentní třídy šablon pro běžné datové struktury, jako jsou vektory, komíny, fronty a některé užitečné algoritmické funkce, jako je binární vyhledávání, které usnadňují programování.

Knihovna standardních šablon v C ++ se skládá ze čtyř komponent:

  1. Algoritmy
  2. Kontejnery
  3. Funkce
  4. Iterátory

Pojďme se podívat na algoritmy a kontejnery ve větší hloubce, protože se jedná o nejčastěji používané komponenty STL.

Algoritmy v STL

The hlavičkový soubor je součástí STL, která se skládá z několika algoritmických funkcí, které lze použít místo jejich ručního kódování. Některé ze zahrnutých algoritmů jsou binární vyhledávání, třídění a obrácení, což je velmi užitečné.

Nejprve je třeba importovat soubor záhlaví v souboru C ++. Syntaxe je následující:

#zahrnout 

U nadcházejících metod zvažte jako příklad proměnnou pole s hodnotami {6, 2, 9, 1, 4}.

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

sort ()

The sort () Funkce vám pomůže seřadit všechny prvky uvnitř zadané datové struktury ve vzestupném pořadí. Tato funkce má dva parametry: počáteční iterátor a koncový iterátor.

Příbuzný: Úvod do algoritmu sloučení řazení

Syntax:

sort (start_iterator, end_iterator);

Zde je rychlý příklad:

třídit (arr, arr + 5);
pro (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Výstup:

1 2 4 6 9

zvrátit()

The zvrátit() funkce obrací pořadí prvků v zadané datové struktuře. Přijímá dva parametry: počáteční iterátor a koncový iterátor.

Syntax:

reverzní (start_iterator, end_iterator);

Zde je krátký příklad výše uvedené metody:

reverzní (arr, arr + 5);
pro (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Výstup:

4 1 9 2 6

* min_element () a * max_element ()

Funkce * max_element () a * min_element () vrací maximální a minimální hodnotu uvnitř zadané datové struktury. Obě tyto funkce přijímají dva argumenty: počáteční iterátor a koncový iterátor.

Syntax:

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

Zjistíme, jaké hodnoty tyto funkce vracejí při jejich volání na příkladu pole:

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

Výstup:

9
1

binary_search ()

The binary_search () metoda se používá k nalezení, zda je zadaná hodnota přítomna uvnitř datové struktury nebo ne. Přijímá tři argumenty: počáteční iterátor, koncový iterátor a hodnotu, kterou chcete najít.

Binární vyhledávání funguje pouze na tříděných datových strukturách. Proto budete muset zavolat na sort () metoda nejprve před binary_search () metoda.

Syntax:

binary_search (start_iterator, end_iterator, value_to_find)

Zde je ukázka této metody:

třídit (arr, arr + 5);
binary_search (arr, arr + 5, 2)? cout << "Element nalezen": cout << "Element nebyl nalezen";
binary_search (arr, arr + 5, 7)? cout << "Element nalezen": cout << "Element nebyl nalezen";

Výstup:

Element nalezen
Prvek nebyl nalezen

počet()

The počet() metoda vrací počet výskytů zadané hodnoty uvnitř datové struktury. Trvá tři argumenty: počáteční iterátor, koncový iterátor a hodnota, která se má počítat.

Syntax:

count (start_iterator, end_iterator, value_to_count);

Zde je příklad této metody:

počet cout << (arr, arr + 5, 2) << endl;

Výstup:

1

Kontejnery v STL

Kontejnery jsou datové struktury, které ukládají objekty a data. Vektory, seznamy, komíny, fronty, sady a mapy jsou některé z příkladů, které do nich ukládají data podle zadaného primitivního datového typu. Tyto kontejnery můžete použít naimportováním jejich příslušných záhlaví do souboru C ++.

Při inicializaci proměnné kontejneru musíte zmínit primitivní data, jako je int, char, tětiva uvnitř <> závorky.

Prozkoumejme některé z těchto kontejnerů podrobněji:

Vektor

Vektory jsou dynamická pole, u kterých lze měnit velikost a jsou flexibilní pro práci. Když vložíte nebo odstraníte prvek z vektoru, automaticky upraví jeho velikost. To je podobné jako Struktura dat ArrayList v Javě.

Syntax:

#zahrnout 
vektor název_ proměnné;

Zde jsou některé důležité vektorové metody:

  1. push_back (hodnota): Tato metoda připojí data k vektoru.
  2. pop_back (): Tato metoda odstraní poslední prvek z vektoru.
  3. insert (index, value): Tato metoda vloží nové prvky před prvek na zadané pozici.
  4. velikost(): Tato metoda vrací velikost vektoru.
  5. prázdný(): Tato metoda kontroluje, zda je vektor prázdný nebo ne.
  6. přední(): Tato metoda vrací první hodnotu vektoru.
  7. zadní(): Metoda zpět vrací poslední hodnotu vektoru.
  8. v (index): Tato metoda vrací hodnotu na zadané pozici.
  9. vymazat (index): Metoda mazání odstraní prvky z daného indexu.
  10. Průhledná(): Tato metoda vymaže všechny položky ve vektoru.
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 << "Velikost daného vektoru" << v.size () << endl;
if (v.empty ()) {
cout << „Vektor je prázdný“ << endl;
} else {
cout << "Vektor není prázdný" << endl;
}
cout << "Prvek na první pozici je" << v.front () << endl;
cout << "Prvek na poslední pozici je" << v.back () << endl;
cout << "Prvek na dané pozici je" << v.at (4) << endl;
v.erase (v.begin () + 1);
pro (int i = 0; i cout << v [i] << "";
}

Výstup:

Velikost daného vektoru 6
Vektor není prázdný
Prvek na první pozici je 23
Prvek na poslední pozici je 5
Prvek na dané pozici je 10
23 12 56 10 5

Fronta

Ve struktuře dat fronty se prvky vkládají zezadu a odstraňují zepředu. Proto se řídí přístupem FIFO („první dovnitř, první ven“).

Syntax:

#zahrnout 
fronta název_ proměnné;

Zde jsou některé důležité metody fronty:

  1. push (hodnota): Tato metoda přidává prvky do fronty.
  2. pop (): Tato metoda odstraní první prvek fronty.
  3. velikost(): Tato metoda vrací velikost fronty.
  4. přední(): Tato metoda vrací první prvek fronty.
  5. zadní(): Tato metoda vrací poslední prvek fronty.
fronta  q;
q. tlačit (30);
q. tlačit (40);
q. tlačit (50);
q. tlačit (60);
q. tlačit (70);
cout << "Prvním prvkem je" << q.front () << endl;
cout << "Posledním prvkem je" << q.back () << endl;
cout << "Velikost fronty je" << q.size () << endl;
q.pop ();
cout << "Tisk všech prvků fronty" << endl;
while (! q.empty ()) {
cout << q.front () << "";
q.pop ();
}

Výstup:

První prvek je 30
Poslední prvek je 70
Velikost fronty je 5
Tisk všech prvků fronty
40 50 60 70

Zásobník

Stohovací kontejnery fungují metodou LIFO. LIFO znamená „poslední dovnitř, první ven“. Data jsou tlačena a vyskakována ze stejného konce.

Syntax:

#zahrnout 
zásobník název_ proměnné;

Zde jsou některé důležité metody zásobníku:

  1. push (hodnota): Tato metoda posune prvek do zásobníku.
  2. pop (): Tato metoda odstraní horní prvek zásobníku.
  3. horní(): Tato metoda vrací hodnotu posledního prvku zadaného do zásobníku.
  4. velikost(): Tato metoda vrací velikost zásobníku.
  5. prázdný(): Tato metoda kontroluje, zda je zásobník prázdný nebo ne.
stack  s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "Horní část zásobníku obsahuje" << s.top () << endl;
s.pop ();
cout << "Horní část zásobníku po provedení pop operace:" << s.top () << endl;
cout << "Tisk všech prvků zásobníku" << endl;
while (! s.empty ()) {
cout << s.top () << "";
s.pop ();
}

Výstup:

Horní část zásobníku obsahuje 60
Horní část zásobníku po provedení pop operace: 50
Tisk všech prvků stohu
50 40 30

Soubor

Kontejnery sady se používají k uchování jedinečných hodnot a hodnotu prvku nelze změnit, jakmile je vložen do sady. Všechny prvky v sadě jsou uloženy tříděným způsobem. Nastavený kontejner je podobný nastavit datovou strukturu v Pythonu.

Syntax:

#zahrnout 
soubor název_ proměnné;

Zde je několik důležitých metod nastavení:

  1. vložit (hodnota): Tato metoda vloží prvky do sady.
  2. začít(): Tato metoda vrací iterátor na první prvek sady.
  3. konec(): Tato metoda vrací iterátor na poslední prvek sady.
  4. velikost(): Tato metoda vrací velikost sady.
  5. prázdný(): Tato metoda kontroluje, zda je sada prázdná nebo ne.
  6. najít (hodnota): Tato metoda vrací iterátor prvku předanému v parametru. Pokud prvek není nalezen, vrátí tato funkce iterátor na konec sady.
  7. vymazat (hodnota): Tato metoda odstranila zadaný prvek ze sady.
set  s;
s. vložka (20);
s.vložení (30);
s. vložka (40);
s.vložení (50);
s.vložení (60);
s.vložení (60);
s.vložení (60);
auto i = s.begin ();
cout << "Prvek na první pozici" << * i << endl;
cout << "Velikost sady" << s.size () << endl;
s.find (20)! = s.end ()? cout << "Element nalezen" << endl: cout << "Element nebyl nalezen" << endl;
s.eráza (30);
cout << "Tisk všech prvků" << endl;
for (auto i = s.begin (); i! = s.end (); i ++) {
cout << * i << "";
}

Výstup:

Prvek na první pozici 20
Velikost sady 5
Element nalezen
Tisk všech prvků
20 40 50 60

C ++ nemusí být těžké

Stejně jako každá jiná dovednost, i praxe je nezbytná k tomu, abyste mohli STK využít naplno. Tyto kontejnery a algoritmy vám pomohou ušetřit spoustu času a snadno se používají. Začněte procvičováním výše uvedených příkladů a nakonec ho začnete používat i ve svých vlastních projektech.

Pokud se však poprvé učíte C ++, začněte tím, že se naučíte základy, než budete rozumět STL.

E-mailem
Jak se naučit programovat v C ++: 6 stránek, jak začít

Chcete se naučit C ++? Zde jsou nejlepší webové stránky a online kurzy k C ++ pro začátečníky i zkušené programátory.

Přečtěte si další

Související témata
  • Programování
  • Výukové programy pro kódování
  • Funkcionální programování
O autorovi
Nitin Ranganath (22 článků publikováno)

Nitin je vášnivý vývojář softwaru a student počítačového inženýrství vyvíjející webové aplikace pomocí technologií JavaScriptu. Pracuje jako webový vývojář na volné noze a ve svém volném čase rád píše pro Linux a programování.

Více od Nitin Ranganath

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji s technickými tipy, recenzemi, bezplatnými elektronickými knihami a exkluzivními nabídkami!

Ještě jeden krok…!

V e-mailu, který jsme vám právě poslali, potvrďte svou e-mailovou adresu.

.