Wat zijn STL-containers in C++

Wat Zijn Stl Containers In C



In C++, STL (standaard sjabloonbibliotheek), containers zijn objecten die worden gebruikt om de collecties van de andere objecten op te slaan. Ze werken op dezelfde manier als klassensjablonen en ondersteunen een groot aantal elementtypen en bieden lidfuncties om rechtstreeks of via iterators toegang te krijgen tot hun elementen.

Soorten C++ STL-containers

In C++ zijn er drie soorten STL containers , die hieronder worden vermeld:







1: Sequentiële containers

In C++ stellen sequentiële containers ons in staat items op te slaan die opeenvolgend kunnen worden opgehaald. Deze containers zijn gecodeerd als arrays of gekoppelde lijsten van datastructuren. Hieronder worden enkele typen sequentiële containers weergegeven.



  • Vector: Het is een array met dynamische grootte die op een aaneengesloten manier in het geheugen wordt opgeslagen.
  • Over wat: Het vertegenwoordigt een wachtrij met twee uiteinden die bewerkingen ondersteunt voor zowel invoegen als verwijderen.
  • matrix: Het is een statische array die tijdens de compilatie wordt toegewezen terwijl de grootte vast blijft.
  • Lijst: Het is een dubbel gekoppelde lijst die snel elementen invoegt en verwijdert op elke plaats in de lijst.
  • Lijst doorsturen: Het is een enkelvoudig gekoppelde lijst zoals een lijst, maar u kunt er maar in één richting doorheen lopen.

Voorbeeld



In dit voorbeeld gebruiken we de vector klasse laten zien hoe een opeenvolgend container werkt.





#include
#include
namespace std; gebruiken;
int hoofd ( ) {
// initialiseer een vector van int type
vector < int > nummers = { 10 , 2 , 16 , 70 , 5 } ;
// druk de vector af
cout << 'Nummers zijn: ' ;
voor ( auto & ik: nummers )
{
cout << i << ', ' ;
}
opbrengst 0 ;
}

De bovenstaande code demonstreert het gebruik van opeenvolgend containers in vectorformaat, wat de opslag van integer-arrays mogelijk maakt. Het programma initialiseert een vector van het type integer, kent er waarden aan toe en drukt ze af met behulp van een lus. Dit voorbeeld laat zien hoe gemakkelijk het is om gegevens in C++ op te slaan en te openen met behulp van de sequentiële houder .



2: Associatieve containers

De associatieve containers stellen ons in staat om elementen op te slaan in de specifieke volgorde die is gedefinieerd door de vergelijkingsoperator. in tegenstelling tot opeenvolgende containers , de volgorde van elementen in associatieve containers wordt onderhouden met behulp van sleutels waarmee gebruikers de elementen kunnen ordenen en openen. Wanneer een element wordt ingevoegd in een associatieve houder , wordt het automatisch op de juiste positie gesorteerd op basis van de sleutel. Dit soort containers wordt intern geïmplementeerd als binaire boomgegevensstructuren.

De associatief containers zijn gecategoriseerd als:

  • Kaart: een verzameling sleutel-waardeparen die zijn gesorteerd met behulp van unieke sleutels
  • Multimap: een verzameling sleutel-waardeparen die zijn gesorteerd met behulp van sleutels
  • Set: Unieke sleutels verzameld en gerangschikt per sleutel.
  • Multisets: een verzameling sleutels die zijn gesorteerd met behulp van sleutels

Voorbeeld

Om te illustreren hoe een associatief container werkt, zullen we gebruik maken van de klasse instellen in dit voorbeeld.

#include
#include
namespace std; gebruiken;
int hoofd ( )
{
// initialiseer een set van int type
set < int > nummers = { 10 , 2 , 16 , 70 , 5 } ;
// print de set
cout << 'Nummers zijn: ' ;
voor ( auto & ik: nummers )
{
cout << i << ', ' ;
}
opbrengst 0 ;
}

De bovenstaande code initialiseert een set gehele getallen in C++, wat een voorbeeld is van een associatieve container. De set zorgt ervoor dat de elementen standaard in oplopende volgorde worden gesorteerd. De code drukt vervolgens de nummers in de set af met behulp van een for-lus.

3: Ongeordende associatieve containers

In C++, ongeordend associatief containers worden gebruikt om de ongesorteerde versies van een associatief container . Ze zijn intern geïmplementeerd zoals hash-tabel datastructuren. De associatief containers zijn gecategoriseerd als:

  • Ongeordende kaart: een verzameling sleutel-waardeparen die zijn gehasht met behulp van unieke sleutels.
  • Ongeordende Multimap: de verzameling sleutel-waardeparen die is gehasht met behulp van sleutels.
  • Ongeordende set: een verzameling unieke sleutels die zijn gehasht met behulp van sleutels.
  • Ongeordende multiset: een verzameling sleutels die zijn gehasht met behulp van sleutels.

Voorbeeld

Om te illustreren hoe een ongeordend associatief container werkt, zullen we gebruik maken van de ongeordende reeks klasse in dit voorbeeld.

#include
#include
namespace std; gebruiken;
int hoofd ( )
{
// initialiseer een unordered_set van int type
ongeordende_set < int > nummers = { 10 , 2 , 16 , 70 , 5 } ;
// print de set
cout << 'Nummers zijn: ' ;
voor ( auto & ik: nummers )
{
cout << i << ', ' ;
}
opbrengst 0 ;
}

Conclusie

Een STL C++ container is het houderobject om de verzameling andere objecten op te slaan. Ze werken op dezelfde manier als klassensjablonen en ondersteunen een groot aantal elementtypen. In deze zelfstudie hebben we de meest gebruikte typen STL C++-containers besproken, namelijk sequentiële containers, associatieve containers net zoals ongeordende associatieve containers .