V C++, STL (štandardná knižnica šablón), kontajnerov sú objekty používané na ukladanie zbierok iných objektov. Fungujú podobne ako šablóny tried a podporujú veľké množstvo typov prvkov a poskytujú členské funkcie na prístup k ich prvkom priamo alebo cez iterátory.
Typy C++ STL kontajnerov
V C++ existujú tri typy STL kontajnerov , ktoré sú uvedené nižšie:
1: Sekvenčné kontajnery
V C++ nám sekvenčné kontajnery umožňujú ukladať položky, ktoré je možné získať postupne. Títo kontajnerov sú zakódované ako polia alebo prepojené zoznamy dátových štruktúr. Niektoré typy sekvenčných kontajnerov sú uvedené nižšie.
- vektor: Ide o pole dynamickej veľkosti, ktoré je uložené v pamäti súvislým spôsobom.
- O čom: Predstavuje obojstranný front, ktorý podporuje operácie pre vkladanie aj mazanie.
- Pole: Je to statické pole pridelené počas kompilácie, pričom jeho veľkosť je stále pevná.
- zoznam: Je to dvojito prepojený zoznam, ktorý vykonáva rýchle vkladanie a odstraňovanie prvkov na ľubovoľnom mieste v zozname.
- Dopredný zoznam: Je to jednoducho prepojený zoznam ako zoznam, ale môžete ho prechádzať iba jedným smerom.
Príklad
V tomto príklade použijeme vektorová trieda ukázať ako a sekvenčné kontajner prevádzkuje.
#include
#include
pomocou menného priestoru std;
int main ( ) {
// inicializovať vektor int typu
vektor < int > čísla = { 10 , 2 , 16 , 70 , 5 } ;
// vytlačte vektor
cout << 'Čísla sú:' ;
pre ( auto & i: nums )
{
cout << i << ',' ;
}
vrátiť 0 ;
}
Vyššie uvedený kód demonštruje použitie sekvenčné kontajnerov vo vektorovom formáte, ktorý umožňuje ukladanie celočíselných polí. Program inicializuje vektor typu integer, priradí mu hodnoty a vytlačí ich pomocou slučky. Tento príklad ukazuje, ako je ľahké ukladať a pristupovať k údajom v C++ pomocou sekvenčný kontajner .
2: Asociatívne kontajnery
Asociačné kontajnery nám umožňujú ukladať prvky v konkrétnom poradí definovanom operátorom porovnávania. Na rozdiel od sekvenčné kontajnery , poradie prvkov v asociatívne kontajnery sa udržiava pomocou kľúčov, ktoré umožňujú používateľom organizovať prvky a pristupovať k nim. Keď je prvok vložený do asociatívny kontajner , automaticky sa zoradí na správnu pozíciu podľa svojho kľúča. Tieto typy kontajnerov sú implementované interne ako binárne stromové dátové štruktúry.
The asociatívne kontajnerov sú kategorizované ako:
- Mapa: kolekcia párov kľúč – hodnota, ktoré boli zoradené pomocou jedinečných kľúčov
- Multimap: kolekcia párov kľúč – hodnota, ktoré boli zoradené pomocou kľúčov
- Nastaviť: Jedinečné kľúče zhromaždené a usporiadané podľa kľúčov.
- Viacnásobná množina: kolekcia kľúčov, ktoré boli triedené pomocou kľúčov
Príklad
Pre ilustráciu ako an asociatívne kontajner funguje, budeme používať nastaviť triedu v tomto príklade.
#include#include
pomocou menného priestoru std;
int main ( )
{
// inicializovať a nastaviť z int typu
nastaviť < int > čísla = { 10 , 2 , 16 , 70 , 5 } ;
// vytlačiť nastaviť
cout << 'Čísla sú:' ;
pre ( auto & i: nums )
{
cout << i << ',' ;
}
vrátiť 0 ;
}
Vyššie uvedený kód inicializuje množinu celých čísel v C++, čo je príklad asociatívneho kontajnera. Sada zabezpečuje, že prvky sú štandardne zoradené vo vzostupnom poradí. Kód potom vytlačí čísla v súprave pomocou slučky for.
3: Neusporiadané asociatívne kontajnery
V C++, neusporiadaný asociatív kontajnerov sa používajú na poskytovanie netriedených verzií an asociatívne kontajner . Sú interne implementované ako dátové štruktúry hašovacích tabuliek. The asociatívne kontajnerov sú kategorizované ako:
- Neusporiadaná mapa: kolekcia párov kľúč – hodnota, ktoré boli hašované pomocou jedinečných kľúčov.
- Neusporiadaná multimapa: kolekciu párov kľúč – hodnota, ktorá bola hašovaná pomocou kľúčov.
- Neobjednaná sada: kolekcia jedinečných kľúčov, ktoré boli hašované pomocou kľúčov.
- Neusporiadaná multimnožina: kolekcia kľúčov, ktoré boli hašované pomocou kľúčov.
Príklad
Aby sme ilustrovali, ako an neusporiadaný asociatív kontajner funguje, budeme používať neusporiadaná sada triedy v tomto príklade.
#include#include
pomocou menného priestoru std;
int main ( )
{
// inicializovať neusporiadanú množinu int typu
unordered_set < int > čísla = { 10 , 2 , 16 , 70 , 5 } ;
// vytlačiť nastaviť
cout << 'Čísla sú:' ;
pre ( auto & i: nums )
{
cout << i << ',' ;
}
vrátiť 0 ;
}
Záver
STL C++ kontajner je držiteľom objektu na uloženie zbierky iných predmetov. Fungujú podobne ako šablóny tried a podporujú veľké množstvo typov prvkov. V tomto návode sme rozobrali najčastejšie používané typy kontajnerov STL C++, ktorými sú sekvenčné kontajnery, asociatívne kontajnery ako aj neusporiadané asociatívne kontajnery .