Hva er STL-beholdere i C++

Hva Er Stl Beholdere I C



I C++, STL (Standard Template Library), containere er objekter som brukes til å lagre de andre objektenes samlinger. De fungerer på samme måte som klassemaler og støtter et stort antall elementtyper og gir medlemsfunksjoner for å få tilgang til elementene deres direkte eller via iteratorer.

Typer C++ STL-beholdere

I C++ er det tre typer STL containere , som er oppført nedenfor:







1: Sekvensielle beholdere

I C++ gjør sekvensielle beholdere oss i stand til å lagre elementer som kan hentes sekvensielt. Disse containere er kodet som matriser eller koblede lister over datastrukturer. Noen typer sekvensielle beholdere er gitt nedenfor.



  • Vektor: Det er en array med dynamisk størrelse som er lagret i minnet på en sammenhengende måte.
  • Om hva: Den representerer en dobbel-ended kø som støtter operasjoner for både innsetting og sletting.
  • Matrise: Det er en statisk matrise som tildeles under kompilering mens størrelsen holdes fast.
  • Liste: Det er en dobbeltlenket liste som utfører rask innsetting og sletting av elementer hvor som helst i listen.
  • Videresend liste: Det er en enkeltkoblet liste som en liste, men du kan bare krysse den i én retning.

Eksempel



I dette eksemplet vil vi bruke vektorklasse å vise hvordan en sekvensiell container opererer.





#include
#inkluder
bruker navneområde std;
int main ( ) {
// initialisere en vektor av int type
vektor < int > tall = { 10 , 2 , 16 , 70 , 5 } ;
// skrive ut vektoren
cout << 'Tall er:' ;
til ( auto & jeg: tall )
{
cout << Jeg << ', ' ;
}
komme tilbake 0 ;
}

Koden ovenfor demonstrerer bruken av sekvensiell containere i vektorformat, som tillater lagring av heltallsmatriser. Programmet initialiserer en vektor av typen heltall, tildeler verdier til den og skriver dem ut ved hjelp av en løkke. Dette eksemplet viser hvordan det er enkelt å lagre og få tilgang til data i C++ ved å bruke sekvensiell beholder .



2: Assosiative beholdere

De assosiative beholderne tillate oss å lagre elementer i den bestemte rekkefølgen som er definert av sammenligningsoperatøren. I motsetning til sekvensielle beholdere , rekkefølgen av elementene i assosiative beholdere vedlikeholdes ved hjelp av nøkler som lar brukere organisere og få tilgang til elementene. Når et element settes inn i en assosiativ beholder , sorteres den automatisk i riktig posisjon basert på nøkkelen. Disse typer containere er implementert internt som binære tredatastrukturer.

De assosiativ containere er kategorisert som:

  • Kart: en samling nøkkel-verdi-par som er sortert ved hjelp av unike nøkler
  • Multimap: en samling nøkkel-verdi-par som er sortert ved hjelp av nøkler
  • Sett: Unike nøkler samlet inn og ordnet etter nøkler.
  • Multisett: en samling nøkler som er sortert ved hjelp av nøkler

Eksempel

For å illustrere hvordan en assosiativ container fungerer, vil vi bruke sett klasse i dette eksemplet.

#include
#include
bruker navneområde std;
int main ( )
{
// initialisere a sett av int type
sett < int > tall = { 10 , 2 , 16 , 70 , 5 } ;
// skrive ut sett
cout << 'Tall er:' ;
til ( auto & jeg: tall )
{
cout << Jeg << ', ' ;
}
komme tilbake 0 ;
}

Koden ovenfor initialiserer et sett med heltall i C++, som er et eksempel på en assosiativ beholder. Settet sikrer at elementene er sortert i stigende rekkefølge som standard. Koden skriver deretter ut tallene i settet ved hjelp av en for-løkke.

3: Uordnede assosiative beholdere

I C++, uordnet assosiativ containere brukes til å gi usorterte versjoner av en assosiativ container . De er internt implementert som hashtabelldatastrukturer. De assosiativ containere er kategorisert som:

  • Uordnet kart: en samling nøkkel-verdi-par som er hashed ved hjelp av unike nøkler.
  • Uordnet multikart: samlingen av nøkkel-verdi-par som er hashed ved hjelp av nøkler.
  • Uordnet sett: en samling unike nøkler som har blitt hash ved hjelp av nøkler.
  • Uordnet multisett: en samling nøkler som har blitt hash ved hjelp av nøkler.

Eksempel

For å illustrere hvordan en uordnet assosiativ container fungerer, vil vi bruke uordnet sett klasse i dette eksemplet.

#include
#include
bruker navneområde std;
int main ( )
{
// initialiser et unordered_set av int type
unordered_set < int > tall = { 10 , 2 , 16 , 70 , 5 } ;
// skrive ut sett
cout << 'Tall er:' ;
til ( auto & jeg: tall )
{
cout << Jeg << ', ' ;
}
komme tilbake 0 ;
}

Konklusjon

En STL C++ container er innehaverens objekt for å lagre samlingen av andre gjenstander. De fungerer på samme måte som klassemaler og støtter et stort antall elementtyper. I denne opplæringen diskuterte vi de mest brukte typene av STL C++-beholdere, som er sekvensielle beholdere, assosiative beholdere i tillegg til uordnede assosiative beholdere .