Mik azok az STL-tárolók a C++ nyelven

Mik Azok Az Stl Tarolok A C Nyelven



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 .