Što su STL kontejneri u C++

Sto Su Stl Kontejneri U C



U C++, STL (Standardna biblioteka predložaka), spremnici su objekti koji se koriste za pohranjivanje kolekcija drugih objekata. Oni rade slično predlošcima klasa i podržavaju veliki broj tipova elemenata i pružaju funkcije članova za pristup njihovim elementima izravno ili putem iteratora.

Vrste C++ STL spremnika

U C++-u postoje tri vrste STL-a spremnici , koji su navedeni u nastavku:







1: Sekvencijalni spremnici

U C++-u, sekvencijalni spremnici omogućuju nam pohranjivanje stavki koje se mogu dohvatiti sekvencijalno. ove spremnici su kodirani kao nizovi ili povezani popisi struktura podataka. Neke vrste sekvencijalnih spremnika dane su u nastavku.



  • Vektor: To je niz dinamičke veličine koji je pohranjen u memoriji na kontinuirani način.
  • O čemu: Predstavlja dvostruki red čekanja koji podržava operacije za umetanje i brisanje.
  • niz: To je statički niz koji se dodjeljuje tijekom kompilacije, a njegova veličina ostaje fiksna.
  • Popis: To je dvostruko povezana lista koja obavlja brzo umetanje i brisanje elemenata na bilo kojem mjestu na listi.
  • Popis za prosljeđivanje: To je jednostruko povezan popis poput popisa, ali možete ga kretati samo u jednom smjeru.

Primjer



U ovom primjeru koristit ćemo klasa vektora pokazati kako a sekvencijalno spremnik djeluje.





#include
#uključi
korištenje imenskog prostora std;
int glavni ( ) {
// inicijalizirati vektor int tip
vektor < int > brojevi = { 10 , 2 , 16 , 70 , 5 } ;
// ispisati vektor
cout << 'Brojevi su: ' ;
za ( auto i ja: brojevi )
{
cout << ja << ', ' ;
}
povratak 0 ;
}

Gornji kod pokazuje upotrebu sekvencijalno spremnici u vektorskom formatu, koji omogućuje pohranjivanje nizova cijelih brojeva. Program inicijalizira vektor tipa integer, dodjeljuje mu vrijednosti i ispisuje ih pomoću petlje. Ovaj primjer pokazuje kako je lako pohraniti i pristupiti podacima u C++-u pomoću sekvencijalni spremnik .



2: Asocijativni spremnici

Asocijativni spremnici omogućuju nam pohranjivanje elemenata u određenom redoslijedu definiranom operatorom usporedbe. Za razliku od sekvencijalni spremnici , redoslijed elemenata u asocijativni spremnici održava se pomoću ključeva koji korisnicima omogućuju organiziranje i pristup elementima. Kada se element umetne u asocijativni spremnik , automatski se sortira na ispravnom mjestu na temelju ključa. Ove vrste spremnika implementirane su interno poput binarnih struktura podataka stabla.

The asocijativni spremnici kategorizirani su kao:

  • Karta: zbirka parova ključ-vrijednost koji su razvrstani pomoću jedinstvenih ključeva
  • Multimap: zbirka parova ključ-vrijednost koji su razvrstani pomoću ključeva
  • set: Unikatni ključevi prikupljeni i složeni po ključevima.
  • Multiset: zbirka ključeva koji su razvrstani pomoću ključeva

Primjer

Da ilustriram kako an asocijativni spremnik radi, koristit ćemo postavljena klasa u ovom primjeru.

#include
#include
korištenje imenskog prostora std;
int glavni ( )
{
// inicijalizirati a postaviti od int tip
postaviti < int > brojevi = { 10 , 2 , 16 , 70 , 5 } ;
// ispisati postaviti
cout << 'Brojevi su: ' ;
za ( auto i ja: brojevi )
{
cout << ja << ', ' ;
}
povratak 0 ;
}

Gornji kod inicijalizira skup cijelih brojeva u C++, što je primjer asocijativnog spremnika. Skup osigurava da su elementi prema zadanim postavkama poredani uzlaznim redoslijedom. Kôd zatim ispisuje brojeve u skupu koristeći for petlju.

3: Neuređeni asocijativni spremnici

U C++, nesređeni asocijativni spremnici koriste se za pružanje nesortiranih verzija an asocijativni spremnik . Oni su interno implementirani poput struktura podataka hash tablice. The asocijativni spremnici kategorizirani su kao:

  • Neuređena karta: zbirka parova ključ-vrijednost koji su raspršeni pomoću jedinstvenih ključeva.
  • Neuređena multimapa: zbirka parova ključ-vrijednost koja je hashirana pomoću ključeva.
  • Neuređeni skup: zbirka jedinstvenih ključeva koji su hashirani pomoću ključeva.
  • Neuređeni multiset: zbirka ključeva koji su hashirani pomoću ključeva.

Primjer

Da bismo ilustrirali kako nesređeni asocijativni spremnik radi, koristit ćemo neuređen skup klase u ovom primjeru.

#include
#include
korištenje imenskog prostora std;
int glavni ( )
{
// inicijalizirati unordered_set int tip
neuređeni_skup < int > brojevi = { 10 , 2 , 16 , 70 , 5 } ;
// ispisati postaviti
cout << 'Brojevi su: ' ;
za ( auto i ja: brojevi )
{
cout << ja << ', ' ;
}
povratak 0 ;
}

Zaključak

STL C++ spremnik je objekt držač za pohranu zbirke drugih objekata. Rade slično predlošcima klasa i podržavaju veliki broj tipova elemenata. U ovom vodiču raspravljali smo o najčešće korištenim vrstama STL C++ spremnika, koji su sekvencijalni spremnici, asocijativni spremnici kao i nesređeni asocijativni spremnici .