Štandardná knižnica šablón (STL) je sada tried šablón C ++ na poskytovanie bežných programovacích dátových štruktúr a funkcií, ako sú zoznamy, komíny, polia atď. V tomto článku STL v C ++ sa budeme zaoberať nasledujúcimi ukazovateľmi:
Pokračujeme týmto článkom o STL v C ++
C ++ šablóny
C ++ nám poskytuje funkciu šablón, ktorá umožňuje funkciám a triedam pracovať s generickými typmi. To umožňuje opätovné použitie funkcie alebo triedy a umožňuje jej pracovať s mnohými rôznymi typmi údajov bez toho, aby boli pre každý z nich prepísané.
Pokračujeme týmto článkom o STL v C ++
Generické funkcie a STL
Pri mnohonásobnom programovaní je potrebné vytvárať funkcie, ktoré vykonávajú rovnaké operácie, ale pracujú s rôznymi typmi údajov. Na prekonanie tohto problému preto C ++ poskytuje funkciu na vytvorenie jednej všeobecnej funkcie namiesto mnohých funkcií, ktoré môžu pracovať s rôznymi dátovými typmi pomocou parametra šablóny. Zbierka týchto genických tried a funkcií sa nazýva Standard Template Library (STL).
Komponenty STL, ktoré sú teraz súčasťou štandardnej knižnice C ++, sú definované v mennom priestore std. Preto ich musíme importovať do nášho programu pomocou direktívy using namespace.
Syntax:
Používanie štandardného priestoru mien
STL má tri komponenty
Kontajnery
Algoritmy
Iterátory
Tieto tri komponenty navzájom spolupracujú, aby poskytli podporu rôznym programovacím riešeniam. Algoritmus využíva iterátory na vykonávanie operácií uložených v kontajneroch.
Kontajner je objekt, ktorý organizovaným spôsobom ukladá údaje do pamäte. Kontajnery v STL sú implementované triedami šablón, a preto ich možno ľahko upraviť a prispôsobiť tak, aby obsahovali rôzne typy údajov.
Procedúra, ktorá sa používa na spracovanie údajov obsiahnutých v kontajneroch, je definovaná ako algoritmus. STL obsahuje mnoho rôznych druhov algoritmov na poskytovanie podpory úlohám, ako je inicializácia, vyhľadávanie, kopírovanie, triedenie a zlučovanie, kopírovanie, triedenie a zlučovanie. Algoritmy sú implementované funkciami šablón.
Iterátor možno definovať ako objekt, ktorý ukazuje na prvok v kontajneri. Iterátory možno použiť na pohyb v obsahu nádob. S iterátormi sa zaobchádza rovnako ako s ukazovateľmi. Môžeme ich zvyšovať alebo znižovať. Iterátory spájajú algoritmus s kontajnermi a hrajú kľúčovú úlohu pri manipulácii s údajmi uloženými v kontajneroch.
Pokračujeme týmto článkom o STL v C ++
Kontajnery
STL definuje desať kontajnerov, ktoré sú zoskupené do troch kategórií.
Kontajnery | Popis | Hlavičkový súbor | Iterátor |
Vektor | Môže byť definovaný ako dynamické pole. Umožňuje priamy prístup k ľubovoľnému prvku. | Náhodný prístup | |
Zoznam | Je to obojsmerný lineárny zoznam. Umožňuje vkladanie a mazanie kdekoľvek | Obojsmerný | |
a | Jedná sa o front s dvoma koncami. Umožňuje vkladanie a mazanie na oboch koncoch. Umožňuje priamy prístup k ľubovoľnému prvku. previesť z dvojitého na int | Náhodný prístup | |
nastaviť | Jedná sa o pridružený kontajner na ukladanie jedinečných súprav. Umožňuje rýchle vyhľadanie. | Obojsmerný | |
multiset | Je to pridružený kontajner na ukladanie nejedinečných súprav. | Obojsmerný | |
mapa | Je to pridružený kontajner na ukladanie jedinečných párov kľúč / hodnota. Ku každému kľúču je priradená iba jedna hodnota. | Obojsmerný | |
multimapa | Je to pridružený kontajner na ukladanie kľúča / hodnoty, v ktorom môže byť jeden kľúč priradený k viac ako jednej hodnote (mapovanie jedna k mnohým). Umožňuje vyhľadávanie na základe kľúčov. | Obojsmerný | |
stoh | Štandardný zásobník nasleduje last-in-first-out (LIFO) | Žiadny iterátor | |
poradie | Nasleduje štandardná fronta first-in-first-out (FIFO) | Žiadny iterátor | |
prioritný rad | Prvý prvok je vždy prvkom s najvyššou prioritou | Žiadny iterátor |
Sekvenčné kontajnery
Sekvenčné kontajnery ukladajú prvky v lineárnom poradí. Všetky prvky sú navzájom spojené svojou polohou pozdĺž čiary. Umožňujú vloženie prvku a všetky z nich podporujú niekoľko operácií.
STL poskytuje tri typy sekvenčných prvkov:
- Vektor
- Zoznam
- a
Asociatívne kontajnery:
Sú navrhnuté tak, aby podporovali priamy prístup k prvkom pomocou klávesov. Nie sú postupné. Existujú štyri typy
asociatívne kontajnery:
- Nastaviť
- Multiset
- Mapa
- Multimap
Všetky vyššie uvedené kontajnery ukladajú údaje do štruktúry nazývanej strom, ktorá sa rýchlo uľahčuje
vyhľadávanie, mazanie a vkladanie na rozdiel od postupného. Sada kontajnerov alebo multiset môže ukladať rôzne položky a poskytovať operácie na ich manipuláciu pomocou hodnôt ako kľúčov.
A mapa alebo Multimap sa používajú na ukladanie položiek v páre, z ktorých jeden sa volá kľúč a druhý
nazval hodnota.
Odvodené kontajnery:
STL poskytuje tri odvodené kontajnery, a to zásobník, fronta a prioritná_kategória. Sú tiež známe ako adaptéry na nádoby.
Existujú tri typy odvodených kontajnerov:
1. Stock
2. Fronta
3. Priorita_qua
Zásobníky, fronty a prioritné fronty je možné ľahko vytvoriť z rôznych kontajnerov sekvencií. Odvodené kontajnery nepodporujú iterátory, a preto ich nemôžeme použiť na manipuláciu s údajmi. Podporujú však dve členské funkcie pop () a push () na vykonávanie operácií mazania a vkladania.
Pokračujeme týmto článkom o STL v C ++
Algoritmy
Algoritmy sú funkcie, ktoré možno všeobecne použiť v rôznych kontajneroch na spracovanie ich obsahu. Aj keď každý kontajner poskytuje funkcie pre svoje základné operácie, STL poskytuje viac ako šesťdesiat štandardných algoritmov na podporu rozšírenejších alebo zložitejších operácií. Štandardné algoritmy nám tiež umožňujú pracovať s dvoma rôznymi typmi kontajnerov súčasne.
Algoritmy STL posilňujú filozofiu opätovného použitia. Použitím týchto algoritmov môžu programátori ušetriť veľa času a úsilia. Aby sme mali prístup k algoritmom STL, musíme ich zahrnúť do nášho programu.
Algoritmus STL možno na základe povahy operácií, ktoré vykonávajú, rozdeliť do týchto kategórií:
Nemutačné algoritmy
Mutačné algoritmy
Triediace algoritmy
Nastaviť algoritmy
Relačný algoritmus
Pokračujeme týmto článkom o STL v C ++
Iterátory:
Iterátory fungujú ako ukazovatele a používajú sa na prístup k prvkom kontajnera. Na prechádzanie obsahom kontajnerov používame iterátory. S iterátormi sa zaobchádza rovnako ako s ukazovateľmi. Môžeme ich zvyšovať alebo znižovať podľa našich požiadaviek. Iterátory spájajú kontajnery s algoritmami a zohrávajú zásadnú úlohu pri manipulácii s údajmi uloženými v kontajneroch. Často sa používajú na prechod z jedného prvku do druhého, tento proces sa nazýva iterácia kontajnerom.
Existuje päť typov iterátorov:
1. Vstup
2. Výstup
3. Vpred
4. obojsmerný
5. Náhodné
Iterátor | Prístupová metóda | Smer pohybu | I / O schopnosť | Poznámka |
Vstup | Lineárne | Iba dopredu | Iba na čítanie | Nedá sa uložiť |
Výkon | Lineárne | Iba dopredu | Iba napíš generovať náhodný reťazec v jave | Nedá sa uložiť |
Vpred | Lineárne | Iba dopredu | Čítaj píš | Možno uložiť |
Obojsmerný | Lineárne | Vpred a vzad | Čítaj píš | Možno uložiť |
Náhodné | Náhodné | Vpred a vzad | Čítaj píš | Možno uložiť |
S rôznymi typmi nádob sa musia používať rôzne typy iterátorov
sekvenčné a asociatívne kontajnery môžu cestovať cez iterátory. Každý typ iterátorov sa používa na vykonávanie určitých funkcií. Vstupné a výstupné iterátory podporujú najmenej funkcií. Môžu sa použiť iba na priechod v kontajneri. Dopredné iterátory podporujú všetky operácie vstupných a výstupných iterátorov a tiež si zachovávajú svoju pozíciu v kontajneri. Obojsmerný iterátor, ktorý podporuje všetky operácie dopredných iterátorov, poskytuje schopnosť pohybovať sa v kontajneri dozadu.
Dostali sme sa tak na koniec tohto článku týkajúceho sa „STL v C ++“. Ak sa chcete dozvedieť viac, pozrite si Edureka, dôveryhodná online vzdelávacia spoločnosť. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je navrhnutý tak, aby vás vyškolil na základné aj pokročilé koncepty Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.
Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto blogu a my sa vám ozveme čo najskôr.