The Standard Template Library (STL) is a set of C ++ template classes to provide common programming data structures and functions such as lists, stacks, arrays, etc. In this STL in C ++ article we will discuss the following pointers:
Pokračujeme tímto článkem o STL v C ++
C ++ šablony
C ++ nám poskytuje funkci šablon, která umožňuje funkcím a třídám pracovat s obecnými typy. To umožňuje opětovné použití funkce nebo třídy a umožňuje jí pracovat na mnoha různých datových typech, aniž by bylo přepsáno pro každou z nich.
Pokračujeme tímto článkem o STL v C ++
Obecné funkce a STL
Při mnohonásobném programování je potřeba vytvářet funkce, které provádějí stejné operace, ale pracují s různými datovými typy. Abychom tento problém překonali, C ++ poskytuje funkci pro vytvoření jedné obecné funkce namísto mnoha funkcí, které mohou pracovat s různými datovými typy pomocí parametru šablony. Kolekce těchto genických tříd a funkcí se nazývá Standard Template Library (STL)
Komponenty STL, které jsou nyní součástí standardní knihovny C ++, jsou definovány ve standardním oboru názvů. Proto je musíme použít direktivu using namespace k jejich importu do našeho programu.
Syntax:
Použití jmenného prostoru std
STL má tři komponenty
Kontejnery
Algoritmy
Iterátory
Tyto tři komponenty vzájemně spolupracují a poskytují podporu různým programovacím řešením. Algoritmus využívá iterátory k provádění operací uložených v kontejnerech.
Kontejner je objekt, který ukládá data v paměti organizovaným způsobem. Kontejnery v STL jsou implementovány třídami šablon, a proto je lze snadno upravit a přizpůsobit tak, aby obsahovaly různé typy dat.
Procedura, která se používá ke zpracování dat obsažených v kontejnerech, je definována jako algoritmus. STL obsahuje mnoho různých druhů algoritmů poskytujících podporu úlohám, jako je inicializace, vyhledávání, kopírování, třídění a slučování, kopírování, třídění a slučování. Algoritmy jsou implementovány funkcemi šablon.
Iterátor lze definovat jako objekt, který ukazuje na prvek v kontejneru. Iterátory lze použít k procházení obsahu kontejnerů. Iterátory jsou zpracovány stejně jako ukazatele. Můžeme je zvyšovat nebo snižovat. Iterátoři spojují algoritmus s kontejnery a hrají klíčovou roli při manipulaci s daty uloženými v kontejnerech.
Pokračujeme tímto článkem o STL v C ++
Kontejnery
STL definuje deset kontejnerů, které jsou seskupeny do tří kategorií.
Kontejnery | Popis | Hlavičkový soubor | Iterátor |
Vektor | Lze jej definovat jako dynamické pole. Umožňuje přímý přístup k jakémukoli prvku. | Náhodný přístup | |
Seznam | Je to obousměrný lineární seznam. Umožňuje vkládání a mazání kdekoli | Obousměrný | |
a | Je to fronta s dvojím zakončením. Umožňuje vkládání a mazání na obou koncích. Umožňuje přímý přístup k jakémukoli prvku. převést z dvojitého na int | Náhodný přístup | |
soubor | Jedná se o přidružený kontejner pro ukládání jedinečných sad. Umožňuje rychlé vyhledávání. | Obousměrný | |
multiset | Jedná se o přidružený kontejner pro ukládání nejedinečných sad. | Obousměrný | |
mapa | Jedná se o přidružený kontejner pro ukládání jedinečných párů klíč / hodnota. Každý klíč je spojen pouze s jednou hodnotou. | Obousměrný | |
multimapa | Jedná se o přidružený kontejner pro ukládání klíče / hodnoty, ve kterém může být jeden klíč přidružen k více než jedné hodnotě (mapování jedna k více). Umožňuje vyhledávání na základě klíčů. | Obousměrný | |
zásobník | Standardní zásobník následuje last-in-first-out (LIFO) | Žádný iterátor | |
fronta | Následuje standardní fronta first-in-first-out (FIFO) | Žádný iterátor | |
prioritní fronta | První prvek je vždy prvkem s nejvyšší prioritou | Žádný iterátor |
Sekvenční kontejnery
Sekvenční kontejnery ukládají prvky v lineárním pořadí. Všechny prvky jsou navzájem příbuzné svou polohou podél čáry. Umožňují vložení prvku a všechny z nich podporují několik operací.
STL poskytuje tři typy sekvenčních prvků:
- Vektor
- Seznam
- a
Asociativní kontejnery:
Jsou navrženy takovým způsobem, že mohou podporovat přímý přístup k prvkům pomocí klíčů. Nejsou postupné. Existují čtyři typy
asociativní kontejnery:
- Soubor
- Multiset
- Mapa
- Multimap
Všechny výše uvedené kontejnery ukládají data ve struktuře zvané strom, která se rychle usnadňuje
vyhledávání, mazání a vkládání na rozdíl od sekvenčního. Sada kontejnerů nebo multiset může ukládat různé položky a poskytovat operace pro jejich manipulaci pomocí hodnot jako klíčů.
A mapa nebo Multimap se používají k ukládání položek v páru, z nichž jeden se nazývá klíč a druhý
volal hodnotu.
Odvozené kontejnery:
STL poskytuje tři odvozené kontejnery, jmenovitě zásobník, fronta a prioritní_kanála. Tito jsou také známí jako adaptéry kontejnerů.
Existují tři typy odvozených kontejnerů:
1. Stoh
2. Fronta
3. Priorita_qua
Zásobníky, fronty a prioritní fronty lze snadno vytvářet z různých kontejnerů sekvence. Odvozené kontejnery nepodporují iterátory, a proto je nemůžeme použít pro manipulaci s daty. Podporují však dvě členské funkce pop () a push () pro implementaci operací mazání a vkládání.
Pokračujeme tímto článkem o STL v C ++
Algoritmy
Algoritmy jsou funkce, které lze obecně použít v různých kontejnerech pro zpracování jejich obsahu. Ačkoli každý kontejner poskytuje funkce pro své základní operace, STL poskytuje více než šedesát standardních algoritmů pro podporu rozšířenějších nebo složitějších operací. Standardní algoritmy nám také umožňují pracovat se dvěma různými typy kontejnerů současně.
Algoritmy STL posilují filozofii opětovného použití. Použitím těchto algoritmů mohou programátoři ušetřit spoustu času a úsilí. Abychom měli přístup k algoritmům STL, musíme do našeho programu zahrnout.
Algoritmus STL lze na základě povahy operací, které provádějí, rozdělit do těchto kategorií:
Nemutující algoritmy
Mutační algoritmy
Algoritmy řazení
Nastavit algoritmy
Relační algoritmus
Pokračujeme tímto článkem o STL v C ++
Iterátoři:
Iterátory fungují jako ukazatele a slouží k přístupu k prvkům kontejneru. K procházení obsahu kontejnerů používáme iterátory. Iterátory jsou zpracovány stejně jako ukazatele. Můžeme je zvyšovat nebo snižovat podle našich požadavků. Iterátoři spojují kontejnery s algoritmy a hrají zásadní roli při manipulaci s daty uloženými v kontejnerech. Často se používají k průchodu z jednoho prvku do druhého, tento proces se nazývá iterace kontejnerem.
Existuje pět typů iterátorů:
1. Vstup
2. Výstup
3. Vpřed
4. Obousměrný
5. Náhodné
Iterátor | Přístupová metoda | Směr pohybu | I / O funkce | Poznámka |
Vstup | Lineární | Pouze vpřed | Pouze ke čtení | Nelze uložit |
Výstup | Lineární | Pouze vpřed | Pouze psát příklad statického bloku v Javě | Nelze uložit |
Vpřed | Lineární | Pouze vpřed | Číst psát | Lze uložit |
Obousměrný | Lineární | Vpřed a vzad | Číst psát | Lze uložit |
Náhodný | Náhodný | Vpřed a vzad | Číst psát | Lze uložit |
Různé typy iterátorů musí být použity s různými typy kontejnerů, takže pouze
sekvence a asociativní kontejnery mohou cestovat iterátory. Každý typ iterátorů se používá k provádění určitých funkcí. Vstupní a výstupní iterátory podporují nejméně funkcí. Mohou být použity pouze k průchodu v kontejneru. Přední iterátory podporují všechny operace vstupních a výstupních iterátorů a také si zachovávají svoji pozici v kontejneru. Obousměrný iterátor, který podporuje všechny operace iterátorů vpřed, poskytuje možnost pohybu v kontejneru zpětným směrem.
Tak jsme dospěli ke konci tohoto článku o „STL v C ++“. Pokud se chcete dozvědět více, podívejte se na Edureka, důvěryhodná online vzdělávací společnost. Školicí a certifikační kurz Edureka Java J2EE a SOA je navržen tak, aby vás vyškolil jak pro základní, tak pro pokročilé koncepty Java spolu s různými rámci Java, jako je Hibernate & Spring.
Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu a my se vám ozveme co nejdříve.