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:
- Algoritmy
- Kontejnery
- Funkce
- 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:
- push_back (hodnota): Tato metoda připojí data k vektoru.
- pop_back (): Tato metoda odstraní poslední prvek z vektoru.
- insert (index, value): Tato metoda vloží nové prvky před prvek na zadané pozici.
- velikost(): Tato metoda vrací velikost vektoru.
- prázdný(): Tato metoda kontroluje, zda je vektor prázdný nebo ne.
- přední(): Tato metoda vrací první hodnotu vektoru.
- zadní(): Metoda zpět vrací poslední hodnotu vektoru.
- v (index): Tato metoda vrací hodnotu na zadané pozici.
- vymazat (index): Metoda mazání odstraní prvky z daného indexu.
- 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:
- push (hodnota): Tato metoda přidává prvky do fronty.
- pop (): Tato metoda odstraní první prvek fronty.
- velikost(): Tato metoda vrací velikost fronty.
- přední(): Tato metoda vrací první prvek fronty.
- 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:
- push (hodnota): Tato metoda posune prvek do zásobníku.
- pop (): Tato metoda odstraní horní prvek zásobníku.
- horní(): Tato metoda vrací hodnotu posledního prvku zadaného do zásobníku.
- velikost(): Tato metoda vrací velikost zásobníku.
- 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í:
- vložit (hodnota): Tato metoda vloží prvky do sady.
- začít(): Tato metoda vrací iterátor na první prvek sady.
- konec(): Tato metoda vrací iterátor na poslední prvek sady.
- velikost(): Tato metoda vrací velikost sady.
- prázdný(): Tato metoda kontroluje, zda je sada prázdná nebo ne.
- 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.
- 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.
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ší
- Programování
- Výukové programy pro kódování
- Funkcionální programování
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í.
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.