STL v c ++: Všetko, čo potrebujete vedieť



Tento článok vám poskytne podrobné a komplexné znalosti STL v C ++ a poskytne vám predstavu aj o rôznych kontajneroch.

Š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.

Container-STL-in-C++

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:

  1. Nastaviť
  2. Multiset
  3. Mapa
  4. 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.