STL v c ++: Vše, co potřebujete vědět



Tento článek vám poskytne podrobné a komplexní znalosti STL v C ++ a poskytne vám představu také o různých kontejnerech.

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.

Container-STL-in-C++

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:

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