C++, STL (Standard Template Library) nyelven, konténerek olyan objektumok, amelyeket a többi objektum gyűjteményének tárolására használnak. Az osztálysablonokhoz hasonlóan működnek, és számos elemtípust támogatnak, valamint tagfüggvényeket biztosítanak elemeik közvetlen vagy iterátorokon keresztüli eléréséhez.
A C++ STL konténerek típusai
A C++ nyelven háromféle STL létezik konténerek , amelyek az alábbiakban találhatók:
1: Szekvenciális tárolók
A C++ nyelven a szekvenciális tárolók lehetővé teszik számunkra, hogy szekvenciálisan visszakereshető elemeket tároljunk. Ezek konténerek adatstruktúrák tömbjeként vagy linkelt listájaként vannak kódolva. Az alábbiakban bemutatunk néhány szekvenciális tárolótípust.
- Vektor: Ez egy dinamikus méretű tömb, amely összefüggő módon tárolódik a memóriában.
- Miről: Ez egy kétvégű várólista, amely támogatja mind a beillesztési, mind a törlési műveleteket.
- Sor: Ez egy statikus tömb, amelyet a fordítás során allokálnak, miközben a mérete rögzített.
- Lista: Ez egy duplán linkelt lista, amely gyorsan beilleszti és törölheti az elemeket a lista bármely pontján.
- Továbbítási lista: Ez egy egyedileg összekapcsolt lista, mint egy lista, de csak egy irányba haladhat rajta.
Példa
Ebben a példában a vektor osztály megmutatni, hogyan a egymás utáni tartály működik.
#include
#include
névtér használata std;
int fő ( ) {
// inicializálja az int vektorát típus
vektor < int > számok = { 10 , 2 , 16 , 70 , 5 } ;
// nyomtassa ki a vektort
cout << 'A számok:' ;
számára ( auto & én: számok )
{
cout << én << ', ' ;
}
Visszatérés 0 ;
}
A fenti kód a használatát mutatja be egymás utáni konténerek vektoros formátumban, amely lehetővé teszi egész szám tömbök tárolását. A program inicializál egy egész típusú vektort, értékeket rendel hozzá, és egy hurok segítségével kinyomtatja azokat. Ez a példa bemutatja, hogyan lehet egyszerűen tárolni és elérni az adatokat C++ nyelven a szekvenciális konténer .
2: Associative Containers
Az asszociatív konténerek lehetővé teszi az elemek tárolását az összehasonlító operátor által meghatározott sorrendben. nem úgy mint szekvenciális konténerek , az elemek sorrendje asszociatív konténerek olyan kulcsokkal karbantartják, amelyek lehetővé teszik a felhasználók számára az elemek rendszerezését és elérését. Amikor egy elemet beillesztünk egy asszociatív tároló , akkor a kulcsa alapján automatikusan a megfelelő pozícióba rendeződik. Az ilyen típusú tárolók belső megvalósítása, mint a bináris fa adatszerkezetek.
A asszociációs konténerek a következők szerint vannak besorolva:
- Térkép: kulcs-érték párok gyűjteménye, amelyek egyedi kulcsok segítségével lettek rendezve
- Többtérkép: kulcs-érték párok gyűjteménye, amelyeket kulcsok segítségével rendeztek
- Készlet: Egyedi kulcsok összegyűjtése és elrendezése kulcsokkal.
- Multiset: kulcsok segítségével rendezett kulcsok gyűjteménye
Példa
Annak szemléltetésére, hogyan egy asszociációs tartály működik, használni fogjuk a beállított osztály ebben a példában.
#include#include
névtér használata std;
int fő ( )
{
// inicializálni a készlet az int típus
készlet < int > számok = { 10 , 2 , 16 , 70 , 5 } ;
// nyomtassa ki a készlet
cout << 'A számok:' ;
számára ( auto & én: számok )
{
cout << én << ', ' ;
}
Visszatérés 0 ;
}
A fenti kód egész számok halmazát inicializálja C++ nyelven, ami egy asszociatív tároló példa. A készlet biztosítja, hogy az elemek alapértelmezés szerint növekvő sorrendben legyenek rendezve. A kód ezután kiírja a készletben lévő számokat egy for hurok segítségével.
3: Rendeletlen asszociatív tárolók
C++ nyelven, rendezetlen asszociatív konténerek egy rendezetlen verzióinak biztosítására szolgálnak asszociációs tartály . Belsőleg implementálva vannak, mint a hash tábla adatstruktúrák. A asszociációs konténerek a következők szerint vannak besorolva:
- Rendeletlen térkép: olyan kulcs-érték párok gyűjteménye, amelyeket egyedi kulcsokkal hash-eltek ki.
- Rendeletlen többtérkép: a kulcsok használatával kivonatolt kulcs-érték pár gyűjtemény.
- Rendeletlen készlet: egyedi kulcsok gyűjteménye, amelyeket kulcsok segítségével kivonatoltak.
- Rendeletlen multikészlet: kulcsok segítségével kivonatolt kulcsok gyűjteménye.
Példa
Annak szemléltetésére, hogyan egy rendezetlen asszociatív tartály működik, használni fogjuk a rendezetlen készlet osztály ebben a példában.
#include#include
névtér használata std;
int fő ( )
{
// inicializálja az int egy rendezetlen_halmazát típus
unordered_set < int > számok = { 10 , 2 , 16 , 70 , 5 } ;
// nyomtassa ki a készlet
cout << 'A számok:' ;
számára ( auto & én: számok )
{
cout << én << ', ' ;
}
Visszatérés 0 ;
}
Következtetés
Egy STL C++ tartály a tartóobjektum, amely más objektumok gyűjteményét tárolja. Az osztálysablonokhoz hasonlóan működnek, és számos elemtípust támogatnak. Ebben az oktatóanyagban az STL C++ konténerek leggyakrabban használt típusait tárgyaltuk szekvenciális konténerek, asszociatív konténerek szintén rendezetlen asszociatív konténerek .