1 / 36

Kni žnice STL (Standard Template Library)

Kni žnice STL (Standard Template Library). Osnova prednášky. Knižnice STL Dátové štruktúry STL Algoritmy STL Iterátory Vektory Znakové reťazce. Standard Template Library. STL (Standard Template Library) je súbor štandardných knižníc, ktoré umožňujú prácu s rôznymi dátovými štruktúrami.

emilia
Download Presentation

Kni žnice STL (Standard Template Library)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Knižnice STL(Standard Template Library)

  2. Osnova prednášky • Knižnice STL • Dátové štruktúry STL • Algoritmy STL • Iterátory • Vektory • Znakové reťazce

  3. Standard Template Library • STL (Standard Template Library) je súbor štandardných knižníc, ktoré umožňujú prácu s rôznymi dátovými štruktúrami. • Jadrom STL sú tri základné prvky: 1. Dátové štruktúry – STL umožňuje používať viaceré bežné typy dátových štruktúr. Definícia týchto štruktúr je obsahom väčšiny knižníc STL. Ide vlastne o rôzne typy generických tried. Okrem uchovávania dát majú triedy zabezpečenú aj základnú funkčnosť, napr. vrátenie veľkosti štruktúry, konkrétnej hodnoty, prvej a poslednej hodnoty, pridanie a vymazanie hodnoty a podobne. 2. Algoritmy – v knižniciach STL sú definované aj algoritmy, ktoré dokážu napr. triediť dáta, vyhľadávať v nich, rôzne ich meniť a podobne. 3. Iterátory – iterátory sú objekty, ktoré sú v podstate obohatenými smerníkmi. Ich úlohou je umožňovať prístup k jednotlivým prvkom štruktúr.

  4. Dátové štruktúry STL • 1. Vektor (knižnica <vector>) Je to najuniverzálnejšia dátová štruktúra. Ide vlastne o dynamické pole, ktoré môže obsahovať prvky ľubovoľného typu. Rozmery poľa sa môžu meniť podľa potreby, teda kedykoľvek, aj po počiatočnej alokácii. Prístup k prvkom vektora je rovnaký ako k prvkom štandardného poľa. Použitie: Kedykoľvek, ak chceme použiť štandardné dynamické pole Výhody: Rýchly náhodný prístup k prvkom Nevýhody: Pomalé vkladanie a vymazávanie

  5. Dátové štruktúry • 2. Obojstranná fronta (knižnica <deque>) Táto štruktúra sa podobá na vektor, je to teda dynamické pole. Rozdiel je najmä vo vkladaní prvkov. Do vektora sa nové prvky pridávajú len na koniec a ak by sme chceli vložiť prvok inde, musíme celý zvyšok poľa posúvať. Do obojstrannej fronty môžeme prvky pridávať aj na začiatok, bez toho, aby sa celé pole posúvalo. Ďalšie rozdiely sú v spôsobe alokácie a dealokácie pamäte. Použitie: Ak potrebujeme použiť dynamické pole, pričom budeme veľakrát vkladať (alebo vyberať) prvky, najmä na koniec a na začiatok. Výhody: Rýchle vkladanie na začiatok, rýchly náhodný prístup Nevýhody: Pomalé vkladanie a mazanie vo vnútri, časovo náročnejšia dealokácia ako pri vektore

  6. Z P N P N P N P N K P N P N P N P N P N P N Dátové štruktúry STL • 3. Zoznam (knižnica <list>) Tu ide o dátovú štruktúru, kde každý prvok okrem hodnoty obsahuje aj smerník na nasledujúci a predchádzajúci prvok. Prvky sú takto navzájom previazané, a ku konkrétnemu prvku sa môžeme dostať len postupne od začiatku alebo od konca. Nie je možný priamy náhodný prístup k prvkom. Použitie: Ak nepotrebujeme k prvkom pristupovať náhodne, ale skôr je dôležité ich poradie, ak vždy spracovávame všetky a ak potrebujeme rýchlo vkladať alebo mazať. Výhody: Rýchle vkladanie a mazanie Nevýhody: Pomalý náhodný prístup

  7. Dátové štruktúry STL • 4. Fronta (knižnica <queue>) Fronta je dátová štruktúra typu FIFO (first in, first out). To znamená, že pridávať sa dá len na koniec a odoberať len zo začiatku. Nie je možný priamy náhodný prístup k prvkom. Použitie: V prípade, keď potrebujeme postupne spracovávať dáta, ktoré „čakajú” na spracovanie v rade. Výhody: Jednoduchá štruktúra Nevýhody: Obmedzená funkčnosť

  8. Dátové štruktúry STL • 5. Zásobník (knižnica <stack>) Zásobník je štruktúra typu LIFO (last in, first out). Teda pridávať sa dá len na koniec a odoberať takisto len z konca. Nie je možný priamy náhodný prístup k prvkom. Použitie: Ak potrebujeme odkladať dáta, zatiaľ čo robíme niečo iné, a po ukončení tejto činnosti ich chceme spracovávať, pričom môžeme začať aj posledným uloženým. Výhody: Jednoduchá štruktúra Nevýhody: Obmedzená funkčnosť

  9. 1 3 6 7 9 10 12 18 8 Dátové štruktúry STL • 6. Množina (knižnica <set>) Množina je usporiadaná dátová štruktúra, ktorá vylučuje duplicitu prvkov. To znamená, že hodnoty sú usporiadané podľa nejakého pravidla, ktoré je možné definovať, a žiadna hodnota sa v štruktúre nevyskytuje dvakrát. Podobne ako zásobník alebo fronta, ani množina neumožňuje priamy náhodný prístup k prvkom. Pri vkladaní sa prvok automaticky zaradí na správne miesto. Ak by sme sa pokúšali vložiť hodnotu, ktorá sa už v množine nachádza, nepodarí sa nám to. Použitie: Ak potrebujeme usporiadané hodnoty s vylúčením duplicity Výhody: Automatické usporiadanie, vylúčenie duplicity Nevýhody: Nemožnosť náhodného prístupu

  10. Dátové štruktúry STL • 7. Multimnožina (knižnica <set>) Multimnožina je množina, ktorá umožňuje duplicitu. Takisto ako množina má svoje prvky usporiadané podľa nejakého pravidla. Použitie, výhody a nevýhody sú podobné ako pri množinách. • 8. Prioritná fronta (knižnica <queue>) Prioritná fronta je založená na rovnakom princípe ako fronta, s tým rozdielom, že nevyberáme prvok, ktorý je na rade podľa poradia, ale prvok s najväčšou prioritou. Priorita je prideľovaná pri vložení prvku. Použitie: Ak potrebujeme spracovávať dáta podľa priority. 5 4 1 3 2

  11. Dátové štruktúry STL • 9. Mapa (knižnica <map>) Mapa je ďalší utriedený dátový typ, ktorý však namiesto samotných prvkov ukladá dvojice prvkov – tzv. kľúč a samotnú hodnotu prvku (napr. poradové číslo a k nemu prislúchajúce meno, meno a k nemu patriace telefónne číslo, reálne číslo a jeho funkčná hodnota atď.). Dvojice v mape sú utriedené podľa kľúča, triediace kritérium sa dá definovať. Pri vkladaní sa nový prvok automaticky zaradí na správne miesto. Mapa nepovoľuje duplicitu kľúčov, hodnoty sa môžu opakovať. Použitie: Kedykoľvek potrebujeme uchovať dvojice prvkov, zoradené podľa nejakého kritéria. Výhody: Automatické zoradenie hodnôt podľa kľúča, uchovávanie dvojíc, zabraňovanie nejednoznačnosti kľúčov Nevýhody: Nemožnosť náhodného prístupu Adam Braňo Ivana Lenka Tomáš

  12. Dátové štruktúry STL • 10. Multimapa (knižnica <map>) Multimapa je mapa, ktorá umožňuje aj duplicitu kľúčov. • 11. Bitová množina (knižnica <bitset>) Bitová množina je štruktúra, ktorá umožňuje uchovávať hodnoty 0 a 1. Je to v podstate vektor, ale s tým rozdielom, že jeho veľkosť musí byť daná už pri vytváraní a potom sa už nemôže meniť.Použitie: Ak potrebujeme uchovávať vopred známy počet hodnôt 0 a 1 Výhody: Rýchly náhodný prístup Nevýhody: Pevná dĺžka Adam Braňo Ivana Lenka Tomáš Braňo

  13. S T R I N G J E S K V E L Ý Dátové štruktúry STL • 12. Znakový reťazec (knižnica <string>) Trieda string slúži na uchovávanie reťazca znakov. Nie je šablónou, ide vždy o znakové pole, je však odvodená od všeobecnejšej generickej triedy. Na rozdiel od jednoduchého znakového poľa, na triedu string môžeme uplatňovať operátory priradenia, sčítania, porovnávania atď., čo bol vlastne dôvod, prečo bola táto trieda zavedená. Ďalším rozdielom je aj väčšia bezpečnosť, keďže C ani C++ nemajú kontrolu prekročenia hraníc poľa. Trieda string bráni vzniku chýb, ktoré by vznikli z tohto dôvodu.

  14. Algoritmy STL • Súčasťou STL je aj knižnica <algorithm>, ktorá obsahuje rôzne algoritmy na prácu s dátovými štruktúrami. Všetky algoritmy sú generické funkcie, fungujú teda pre všetky typy dátových štruktúr, pre ktoré majú zmysel. • V knižnici <algorithm> je okolo 70 algoritmov, napríklad: Hľadanie maxima a minima Hľadanie konkrétnej hodnoty v štruktúre Triedenie Zisťovanie rozsahu štruktúry Vkladanie a odstraňovanie prvkov Aplikovanie funkcie na prvky Hľadanie prieniku a rozdielu Odstraňovanie duplicít Zmena hodnôt vybraných prvkov Výmeny prvkov ...

  15. Iterátory • Ako sme si už hovorili, iterátory sú objekty, ktoré sú rozšírenými smerníkmi na prvky dátových štruktúr. Sú to teda objekty, ktoré v sebe obsahujú smerník na prvok nejakého typu a k tomu ďalšie dáta a metódy (informáciu o type iterátora, preťažené operátory atď.) • Iterátory slúžia na prístup k prvkom štruktúry. Používajú sa napr. pri prechádzaní štruktúrou, vkladaní a vymazávaní a pod. • Každá štruktúra ma iný charakter – niektoré štruktúry umožňujú náhodný prístup, iné len postup od začiatku do konca, obojsmerný postup a pod. Preto v STL poznáme niekoľko typov iterátorov: 1. Iterátor s náhodným prístupom – umožňuje náhodný prístup k prvkom štruktúr, ktoré to dovoľujú 2. Obojsmerný iterátor – dá sa pomocou neho pohybovať vpred aj vzad v rámci štruktúry, vždy však len o jedno miesto 3. Dopredný iterátor – slúži len na pohyb vpred o jedno miesto 4. Reverzný iterátor – slúži len na pohyb vzad o jedno miesto 5. Vstupný iterátor – dopredný iterátor, ktorý vie len čítať hodnoty 6. Výstupný iterátor – dopredný iterátor, ktorý vie len zapisovať hodnoty

  16. Vektory v STL • Ako sme si už hovorili, vektor je dynamické pole, ktoré môže uchovávať prvky ľubovoľného typu. • Aby sme mohli používať vektory, musíme do programu zahrnúť knižnicu <vector>, a dátový typ sa volá vector. • V programe môžeme vytvoriť objekt typu vector viacerými spôsobmi: 1. vector<typ> meno_vektora; – vytvorí prázdny vektor s nulovou dĺžkou 2. vector<typ> meno_vektora(dĺžka, hodnota); - vytvorí vektor s dĺžkou dĺžka, ktorého všetky prvky budú mať hodnotu hodnota. 3. vector<typ> meno_vektora(vektor1) – vytvorí vektor, ktorý bude mať rovnaké prvky ako vektor1.vektor1musí byť rovnakého typu. 4. vector<typ> meno_vektora(iterátor1, iterátor2) – vytvorí vektor, ktorý bude mať prvky nachádzajúce sa medzi miestami, na ktoré ukazujú iterátor1 a iterátor2. Iterátory musia ukazovať na rovnaký typ prvkov, ako sú prvky vytváraného vektora.

  17. Vektory v STL • Teraz si uvedieme niektoré metódy triedy vector: int size() – vráti aktuálnu veľkosť vektora int capacity() – vráti aktuálnu kapacitu, teda maximálny počet prvkov, ktoré ešte vektor dokáže prijať bez ďalšej alokácie void reserve(int n) – nastaví kapacitu vektora tak, že je rovná aspoň n void push_back(typ hodnota) – pridá hodnotu daného typu na koniec vektora. Ak je už vektor plný, jeho kapacita sa zväčší, ak je to fyzicky možné. void assign(int n, typ hodnota) – priradí vektoru n prvkov s hodnotou hodnota void pop_back() – odstráni posledný prvok &typ front() – vracia odkaz na prvý prvok vektora &typ back() – vracia odkaz na posledný prvok vektora iterator begin() – vracia iterátor k prvému prvku vektora iterator end() – vráti iterátor na koniec vektora void clear() – vymaže všetky prvky iterator insert(iterator i, typ hodnota) – vloží hodnotu pred pozíciu určenú iterátorom i. Vráti iterátor na vložený prvok. iterator erase(iterator i) – odstráni prvok určený iterátorom i. Vráti iterátor na prvok nasledujúci za vymazaným.

  18. Vektory v STL • Vektor napĺňame priamo v konštruktore, pomocou funkcií push_back alebo assign. Ak už máme vektor naplnený hodnotami, pristupujeme k jeho prvkom tak ako v prípade jednoduchého poľa – pomocou operátora []. • Príklad: Počítanie priemernej teploty V súbore máme teplotu nameranú o 12:00 za posledných niekoľko dní (počet nie je známy). Máme načítať všetky hodnoty, uložiť ich do poľa a potom vypočítať priemernú teplotu za toto obdobie. • Vytvoríme triedu Teplomer, ktorá sa bude starať o všetky operácie s údajmi: class Teplomer { private: vector<float> teplota; public: void NacitajTeploty(char *filename); float PriemernaTeplota(); int PocetTeplot() {return teplota.size();} };

  19. Vektory v STL • Teraz definujeme metódy triedy Teplomer, ktoré ešte neboli definované: void Teplomer::NacitajTeploty(char *filename) { float t; fstream file(filename,fstream::in); while (!file.eof()) { file>>t; if (file.eof()) break; teplota.push_back(t); } file.close(); } float Teplomer::PriemernaTeplota() { float sum=0.; for (int i=0;i<teplota.size();i++) sum+=teplota[i]; return sum/teplota.size(); }

  20. Vektory v STL • Hlavný program: Teplomer T; T.NacitajTeploty("teploty.txt"); cout<<"Priemerna teplota za poslednych "<<T.PocetTeplot()<<" dni bola "<<T.PriemernaTeplota()<<" stupnov"<<endl; return 0; Ak máme v súbore zadané napr. tieto hodnoty: 20.1 22.5 23.7 20.9 22.0 dostaneme výstup: Priemerna teplota za poslednych 5 dni bola 21.84 stupnov

  21. Vektory v STL • Príklad: Napĺňanie vektora pomocou operátora [ ] Predchádzajúci príklad prepíšeme tak, že nebudeme používať na napĺňanie vektora metódu push_back, ale skúsime to len priradením každého prvku. Zmena teda nastane len vo funkcii NačítajTeploty: void Teplomer::NacitajTeploty(char *filename) { float t; int i=0; fstream file(filename,fstream::in); while (!file.eof()) { file>>t; if (file.eof()) break; teplota[i]=t; i++; } file.close(); }

  22. Vektory v STL • Ak použijeme takýto kód, program sa bez problémov skompiluje, ale výstup nás veľmi nepoteší: • Problém v tomto prípade nastal, pretože vektor teplota bol prázdny a hlavne nemal inicializovaný žiadny rozmer. Preto nemôžeme pristupovať k nijakým jeho prvkom.

  23. Vektory v STL • Môžeme si skúsiť pomôcť rezervovaním miesta pre vektor – v tom prípade by nemal program spadnúť: void Teplomer::NacitajTeploty(char *filename) { float t; int i=0; fstream file(filename,fstream::in); teplota.reserve(10); while (!file.eof()) { file>>t; if (file.eof()) break; teplota[i]=t; i++; } file.close(); }

  24. Vektory v STL • Skutočne, program nespadne, výstup však nebude oveľa lepší: • Čo sa stalo tento raz? Teraz mal vektor teplota vyhradené miesto, a preto program neskrachoval. Ale jeho veľkosť, ktorú vracia metóda size(), bola stále nulová. Pomocou reserve nastavujeme len kapacitu, teda koľko prvkov by sme mohli do vektora uložiť, ale skutočný počet prvkov môže byť menší. Tým, že i-temu prvku niečo priradíme, nezmeníme veľkosť vektora, ktorú vracia size(). Naopak, funkcia push_back túto veľkosť zmení. Preto, aj keď sa hodnoty načítali, veľkosť bola stále evidovaná ako nulová. Takže, vektor napĺňame len pomocou konštruktora, push_back a assign!

  25. Vektory a iterátory • Ak chceme vytvoriť iterátor k vektoru, urobíme to takto: vector<typ>::iterator meno_iterátoru; • Niektoré prekladače vyžadujú, aby bola do programu zahrnutá knižnica <iterator>. • S iterátorom narábame ako so smerníkom, teda ak chceme získať hodnotu, na ktorú ukazuje, urobíme to takto: *meno_iterátoru Takisto môžeme používať smerníkovú aritmetiku, teda pripočítavať a odpočítavať celočíselné hodnoty, používať operátory ++,-- a aj priradiť ľubovoľnú hodnotu. • Treba si uvedomiť, že trieda vector umožňuje náhodný prístup, a preto sú pre jej iterátor povolené všetky spomenuté operácie. Neplatí to pre iterátory všetkých STL štruktúr. Ak si spomenieme na typy iterátorov, iterátor triedy vektor je iterátor s náhodným prístupom.

  26. Vektory a iterátory • Príklad: Výpis prvkov vektora pomocou iterátora Budeme mať vektor znakov. Pomocou iterátora sa pokúsime vypísať jeho obsah. int main() { char *s="Po pismenku vypiseme celu tuto vetu."; vector<char> veta; vector<char>::iterator iter; for (int i=0;i<36;i++) veta.push_back(s[i]); iter=veta.begin(); for (i=0;i<veta.size();i++) { cout<<*iter; iter++; } return 0; } Výstup: Po pismenku vypiseme celu tuto vetu.

  27. Vektory a iterátory • Ten istý program sa dá zapísať aj iným, jednoduchším spôsobom. Iterátor sa dá priamo použiť ako riadiaca premenná cyklu: int main() { char *s="Po pismenku vypiseme celu tuto vetu."; vector<char> veta; vector<char>::iterator iter; for (int i=0;i<36;i++) veta.push_back(s[i]); for (iter=veta.begin();iter!=veta.end();iter++) cout<<*iter; return 0; }

  28. Vektory a iterátory • Príklad: Vkladanie do vektora a vymazávanie z vektora Majme opäť znakový vektor s týmto obsahom: Tak sa mi zda, ze v tjto vete nieco nie je v pooriadku. Opravme chyby pomocou iterátorov. int main(int argc, char* argv[]) { char *s="Tak sa mi zda, ze v tjto vete nieco nie je v pooriadku."; vector<char> veta; vector<char>::iterator iter; for (int i=0;i<55;i++) veta.push_back(s[i]); veta.insert(veta.begin()+21,'e'); veta.erase(veta.begin()+47); for (iter=veta.begin();iter!=veta.end();iter++) cout<<*iter; return 0; } Výstup: Tak sa mi zda, ze v tejto vete nieco nie je v poriadku.

  29. Trieda string • Už vieme, že znakový reťazec môžeme vytvoriť jednoducho ako pole znakov: char s[n]; char *s; • Okrem toho máme však v C++ aj triedu string, definovanú v knižnici <string>, ktorá umožňuje pohodlnejšiu a bohatšiu prácu s reťazcami. Znakový reťazec vytvoríme jednoducho: string meno_reťazca; • Pre stringy sú definované tieto operátory: = - operátor priradenia + - spojenie dvoch reťazcov += - priradenie so spojením ==, != - testy rovnosti a nerovnosti <, <=, >, >= - porovnávanie [] – prístup ku konkrétnemu znaku stringu

  30. Trieda string • Okrem operátorov má trieda string aj ďalšie užitočné metódy: int size() – vráti aktuálnu dĺžku stringu const char *c_str() – vráti pole znakov, ktoré tvorí obsah stringu string &assign(string &s, int začiatok, int n) – do stringu sa priradí n znakov zo stringu s, začínajúc indexom začiatok. string &assign(char *s, int n) – do stringu sa priradí prvých n znakov reťazca s. string &append(string &s, int začiatok, int n) – k stringu sa pripojí n znakov zo stringu s, začínajúc indexom začiatok. string &append(char *s, int n) – k stringu sa pripojíprvých n znakov z reťazca s.

  31. Trieda string • Ďalšie metódy: string &insert(int kam, string &s) – vloží do stringu string s, na pozíciu kam. string &insert(int kam, string &s, int začiatok, int n) – vloží do stringu n znakov zo stringu s, na pozíciu kam, začínajúc od indexu začiatok. string &replace(int odkiaľ, int n, string &s) – nahradí n znakov v stringu znakmi zo stringu s, začína indexom odkiaľ. string &erase(int začiatok=0, int n=npos) – vymaže zo stringu n znakov, začínajúc od indexu začiatok. Ak neuvedieme začiatok, začína sa od prvého znaku, ak neuvedieme ani n, vymaže sa všetko. npos je konštanta, ktorá udáva maximálnu možnú dĺžku stringu, jej hodnota býva zvyčajne -1. int find(string &s, int začiatok=0)– nájde v stringu string s, začína hľadať od pozície začiatok. Ak sa hľadaný reťazec nenájde, funkcia vráti npos. int find(char *s, int začiatok=0) – nájde v stringu reťazec s

  32. Trieda string • Príklad: Skladanie vety Majme dané tieto slová: Robiť, Starosti, Asi, Počítaču, Nebude, Abeceda. Zložme z nich vetu tak, aby v nej tieto slová boli usporiadané podľa abecedy. #include <iostream> #include <string> using namespace std; int main() { int min; string veta="", s; string Slova[6]={"Robit","Starosti","Asi","Pocitacu","Nebude","Abeceda"}; ...

  33. Trieda string • V ďalšej časti programu slová utriedime a spojíme do vety. Využijeme pritom operátory triedy string: for (int i=0;i<5;i++) { min=i; for (int j=i+1;j<6;j++) if (Slova[j]<Slova[min]) min=j; if (min!=i){ s=Slova[min]; Slova[min]=Slova[i]; Slova[i]=s; } } for (i=0;i<6;i++) veta+=Slova[i]+""; cout<<veta<<endl; return 0; } Výstup: Abeceda Asi Nebude Pocitacu Robit Starosti

  34. Načítanie objektu triedy string • Ak chceme správne načítať objekt typu string, nemôžeme použiť metódu getline príslušného streamu, pretože tá má ako parameter jednoduché znakové pole a nie objekt triedy string. Pre string máme podobnú funkciu, ktorá nie je metódou nijakej triedy. Táto funkcia sa takisto volá getline a jej syntax je: basic_istream &getline(basic_istream &str, string &s); Táto funkcia načíta string s zo streamu str. Týmto streamom môže byť akýkoľvek vstupný stream, teda napr. súbor alebo objekt cin. Ak teda chceme načítať string s z klávesnice, napíšeme: getline(cin,s); Ak ho chceme načítať zo súboru, napíšeme: getline(meno_suboru,s);

  35. Načítanie objektu triedy string • Príklad: Úprava výrokov na pozitívne Napíšeme program, ktorý od užívateľa načíta vetu. Ak sa v nej bude nachádzať slovo „zlý”, vymaže ho a nahradí slovom „dobrý”. string veta; cout<<"Napis nejaku vetu"<<endl; getline(cin,veta); int kde_je=veta.find("zly"); if (kde_je==-1) cout<<"V tejto vete nie je nic zle"<<endl; else { veta.erase(kde_je,3); veta.insert(kde_je,"dobry"); cout<<"Opravil som tvoju vetu: "<<endl<<veta<<endl; } Napis nejaku vetu Dnes je nejaky zly den! Opravil som tvoju vetu: Dnes je nejaky dobry den!

  36. Zhrnutie • STL (Standard Template Library) je súbor knižníc, ktoré obsahujú bežné dátové štruktúry a prostriedky na prácu s nimi • Základnými prvkami STL sú dátové štruktúry, algoritmy a iterátory • Najpoužívanejšie dátové štruktúry definované v STL sú vektor, zoznam (fronta a zásobník), mapa, množina a string. • Vektor je dynamické pole, ktoré môže kedykoľvek meniť svoju kapacitu podľa potrieb programu • String je znakový reťazec, ktorý na rozdiel od obyčajného znakového poľa umožňuje používať aj štandardné operátory a rôzne iné metódy pre pohodlnejšiu prácu s ním

More Related