Hvad er STL-containere i C++

Hvad Er Stl Containere I C



I C++, STL (Standard Template Library), containere er objekter, der bruges til at opbevare de andre objekters samlinger. De fungerer på samme måde som klasseskabeloner og understøtter et stort antal elementtyper og giver medlemsfunktioner til at få adgang til deres elementer direkte eller via iteratorer.

Typer af C++ STL-containere

I C++ er der tre typer STL containere , som er anført nedenfor:







1: Sekventielle containere

I C++ gør sekventielle containere os i stand til at gemme elementer, der kan hentes sekventielt. Disse containere er kodet som arrays eller sammenkædede lister over datastrukturer. Nogle typer sekventielle beholdere er angivet nedenfor.



  • Vektor: Det er et array af dynamisk størrelse, der er lagret i hukommelsen på en sammenhængende måde.
  • Om hvad: Det repræsenterer en dobbeltkø, der understøtter operationer til både indsættelse og sletning.
  • Array: Det er et statisk array, der tildeles under kompilering, mens størrelsen holdes fast.
  • Liste: Det er en dobbelt-linket liste, der udfører hurtig indsættelse og sletning af elementer hvor som helst på listen.
  • Videresend liste: Det er en enkelt-linket liste ligesom en liste, men du kan kun krydse den i én retning.

Eksempel



I dette eksempel vil vi bruge vektor klasse at vise hvordan en sekventiel beholder fungerer.





#include
#inkluder
bruger navneområde std;
int main ( ) {
// initialisere en vektor af int type
vektor < int > tal = { 10 , 2 , 16 , 70 , 5 } ;
// udskriv vektoren
cout << 'Numrene er:' ;
til ( auto & i: tal )
{
cout << jeg << ', ' ;
}
Vend tilbage 0 ;
}

Ovenstående kode ovenfor demonstrerer brugen af sekventiel containere i vektorformat, som giver mulighed for lagring af heltalsarrays. Programmet initialiserer en vektor af typen heltal, tildeler værdier til den og udskriver dem ved hjælp af en loop. Dette eksempel viser, hvordan det er nemt at gemme og få adgang til data i C++ ved hjælp af sekventiel beholder .



2: Associative Containere

De associative beholdere tillade os at gemme elementer i den bestemte rækkefølge, som er defineret af sammenligningsoperatøren. I modsætning til sekventielle beholdere , rækkefølgen af ​​elementer i associative beholdere vedligeholdes ved hjælp af nøgler, der giver brugerne mulighed for at organisere og få adgang til elementerne. Når et element indsættes i en associativ beholder , sorteres den automatisk i den korrekte position baseret på dens nøgle. Disse typer containere implementeres internt som binære trædatastrukturer.

Det associativ containere er kategoriseret som:

  • Kort: en samling af nøgle-værdi-par, der er blevet sorteret ved hjælp af unikke nøgler
  • Multimap: en samling af nøgle-værdi-par, der er blevet sorteret ved hjælp af nøgler
  • Sæt: Unikke nøgler indsamlet og arrangeret efter nøgler.
  • Multisæt: en samling nøgler, der er blevet sorteret ved hjælp af nøgler

Eksempel

For at illustrere, hvordan en associativ beholder virker, vil vi bruge sæt klasse i dette eksempel.

#include
#inkluder
bruger navneområde std;
int main ( )
{
// initialisere a sæt af int type
sæt < int > tal = { 10 , 2 , 16 , 70 , 5 } ;
// udskrive sæt
cout << 'Numrene er:' ;
til ( auto & i: tal )
{
cout << jeg << ', ' ;
}
Vend tilbage 0 ;
}

Ovenstående kode initialiserer et sæt heltal i C++, som er et eksempel på en associativ beholder. Sættet sikrer, at elementerne som standard sorteres i stigende rækkefølge. Koden udskriver derefter tallene i sættet ved hjælp af en for-løkke.

3: Uordnede Associative Containere

I C++, uordnet associativ containere bruges til at levere usorterede versioner af en associativ beholder . De er internt implementeret som hash-tabeldatastrukturer. Det associativ containere er kategoriseret som:

  • Uordnet kort: en samling af nøgle-værdi-par, der er blevet hashed ved hjælp af unikke nøgler.
  • Uordnet multimap: samlingen af ​​nøgleværdi-par, der er blevet hashed ved hjælp af nøgler.
  • Uordnet sæt: en samling af unikke nøgler, der er blevet hashed ved hjælp af nøgler.
  • Uordnet multisæt: en samling af nøgler, der er blevet hashed ved hjælp af nøgler.

Eksempel

For at illustrere, hvordan en uordnet associativ beholder virker, vil vi bruge uordnet sæt klasse i dette eksempel.

#include
#include
bruger navneområde std;
int main ( )
{
// initialisere et uordnet_sæt af int type
unordered_set < int > tal = { 10 , 2 , 16 , 70 , 5 } ;
// udskrive sæt
cout << 'Numrene er:' ;
til ( auto & i: tal )
{
cout << jeg << ', ' ;
}
Vend tilbage 0 ;
}

Konklusion

En STL C++ beholder er indehaverens objekt til at opbevare samlingen af ​​andre genstande. De fungerer på samme måde som klasseskabeloner og understøtter et stort antal elementtyper. I denne tutorial diskuterede vi de mest almindeligt anvendte typer af STL C++ containere, som er sekventielle beholdere, associative beholdere såvel som uordnede associative beholdere .