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 .