Co jsou STL kontejnery v C++

Co Jsou Stl Kontejnery V C



V C++, STL (Standard Template Library), kontejnery jsou objekty používané k ukládání sbírek jiných objektů. Fungují podobně jako šablony tříd a podporují velké množství typů prvků a poskytují členské funkce pro přístup k jejich prvkům přímo nebo prostřednictvím iterátorů.

Typy C++ STL kontejnerů

V C++ existují tři typy STL kontejnery , které jsou uvedeny níže:







1: Sekvenční kontejnery

V C++ nám sekvenční kontejnery umožňují ukládat položky, které lze načítat postupně. Tyto kontejnery jsou kódovány jako pole nebo propojené seznamy datových struktur. Některé typy sekvenčních kontejnerů jsou uvedeny níže.



  • Vektor: Jedná se o dynamicky velké pole, které je uloženo v paměti souvisle.
  • O čem: Představuje dvojitou frontu, která podporuje operace pro vkládání i mazání.
  • Pole: Je to statické pole alokované během kompilace, přičemž jeho velikost zůstává pevná.
  • Seznam: Jedná se o dvojitě propojený seznam, který provádí rychlé vkládání a mazání prvků na libovolném místě seznamu.
  • Seznam vpřed: Je to jednoduše propojený seznam jako seznam, ale můžete jej procházet pouze jedním směrem.

Příklad



V tomto příkladu použijeme vektorová třída ukázat, jak a sekvenční kontejner provozuje.





#include
#include
pomocí jmenného prostoru std;
int main ( ) {
// inicializovat vektor int typ
vektor < int > čísla = { 10 , 2 , 16 , 70 , 5 } ;
// vytisknout vektor
cout << 'Čísla jsou:' ;
pro ( auto & i: nums )
{
cout << i << ',' ;
}
vrátit se 0 ;
}

Výše uvedený kód demonstruje použití sekvenční kontejnery ve vektorovém formátu, který umožňuje ukládání celočíselných polí. Program inicializuje vektor typu integer, přiřadí mu hodnoty a vytiskne je pomocí smyčky. Tento příklad ukazuje, jak je snadné ukládat a přistupovat k datům v C++ pomocí sekvenční kontejner .



2: Asociativní kontejnery

Asociativní kontejnery nám umožňují ukládat prvky v konkrétním pořadí definovaném operátorem porovnání. Na rozdíl od sekvenční kontejnery , pořadí prvků v asociativní kontejnery se udržuje pomocí klíčů, které uživatelům umožňují organizovat prvky a přistupovat k nim. Když je prvek vložen do asociativní kontejner , je automaticky seřazeno na správnou pozici na základě jeho klíče. Tyto typy kontejnerů jsou implementovány interně jako binární stromové datové struktury.

The asociativní kontejnery jsou kategorizovány jako:

  • Mapa: kolekce párů klíč–hodnota, které byly seřazeny pomocí jedinečných klíčů
  • Multimapa: kolekce párů klíč–hodnota, které byly seřazeny pomocí klíčů
  • Soubor: Jedinečné klíče shromážděné a uspořádané podle klíčů.
  • Multiset: kolekce klíčů, které byly seřazeny pomocí klíčů

Příklad

Pro ilustraci jak an asociativní kontejner funguje, budeme používat nastavit třídu v tomto příkladu.

#include
#include
pomocí jmenného prostoru std;
int main ( )
{
// inicializovat a soubor z int typ
soubor < int > čísla = { 10 , 2 , 16 , 70 , 5 } ;
// vytisknout soubor
cout << 'Čísla jsou:' ;
pro ( auto & i: nums )
{
cout << i << ',' ;
}
vrátit se 0 ;
}

Výše uvedený kód inicializuje sadu celých čísel v C++, což je příklad asociativního kontejneru. Sada zajišťuje, že prvky jsou ve výchozím nastavení seřazeny vzestupně. Kód pak vytiskne čísla v sadě pomocí smyčky for.

3: Neuspořádané asociativní kontejnery

V C++, neuspořádaný asociativní kontejnery se používají k poskytování netříděných verzí souboru asociativní kontejner . Jsou interně implementovány jako datové struktury hashovací tabulky. The asociativní kontejnery jsou kategorizovány jako:

  • Neuspořádaná mapa: kolekce párů klíč–hodnota, které byly hašovány pomocí jedinečných klíčů.
  • Neuspořádaná multimapa: kolekce párů klíč–hodnota, která byla hašována pomocí klíčů.
  • Neuspořádaná sada: kolekce jedinečných klíčů, které byly hashovány pomocí klíčů.
  • Neuspořádaná multiset: kolekce klíčů, které byly hashovány pomocí klíčů.

Příklad

Abychom ilustrovali, jak an neuspořádaný asociativní kontejner funguje, budeme používat neuspořádaná sada třídy v tomto příkladu.

#include
#include
pomocí jmenného prostoru std;
int main ( )
{
// inicializovat neuspořádanou_množinu int typ
unordered_set < int > čísla = { 10 , 2 , 16 , 70 , 5 } ;
// vytisknout soubor
cout << 'Čísla jsou:' ;
pro ( auto & i: nums )
{
cout << i << ',' ;
}
vrátit se 0 ;
}

Závěr

STL C++ kontejner je objekt držitele pro uložení sbírky jiných objektů. Fungují podobně jako šablony tříd a podporují velké množství typů prvků. V tomto tutoriálu jsme probrali nejčastěji používané typy STL C++ kontejnerů, kterými jsou sekvenční kontejnery, asociativní kontejnery jakož i neuspořádané asociativní kontejnery .