Que sont les conteneurs STL en C++

Que Sont Les Conteneurs Stl En C



En C++, STL (Standard Template Library), conteneurs sont des objets utilisés pour stocker les collections des autres objets. Ils fonctionnent de la même manière que les modèles de classe et prennent en charge un grand nombre de types d'éléments et fournissent des fonctions membres pour accéder à leurs éléments directement ou via des itérateurs.

Types de conteneurs STL C++

En C++, il existe trois types de STL conteneurs , qui sont listés ci-dessous :







1 : Conteneurs séquentiels

En C++, les conteneurs séquentiels nous permettent de stocker des éléments qui peuvent être récupérés séquentiellement. Ces conteneurs sont encodés sous forme de tableaux ou de listes chaînées de structures de données. Certains types de conteneurs séquentiels sont donnés ci-dessous.



  • Vecteur: Il s'agit d'un tableau dimensionné dynamiquement qui est stocké en mémoire de manière contiguë.
  • De quoi: Il représente une file d'attente double qui prend en charge les opérations d'insertion et de suppression.
  • Déployer: C'est un tableau statique alloué lors de la compilation tout en gardant sa taille fixe.
  • Liste: Il s'agit d'une liste à double liaison qui effectue une insertion et une suppression rapides d'éléments à n'importe quel endroit de la liste.
  • Liste de transfert : C'est une liste simple comme une liste, mais vous ne pouvez la parcourir que dans une seule direction.

Exemple



Dans cet exemple, nous utiliserons le classe de vecteur pour montrer comment un séquentiel récipient fonctionne.





#include
#include
en utilisant l'espace de noms std ;
int main ( ) {
// initialiser un vecteur de int taper
vecteur < entier > nombres = { dix , 2 , 16 , 70 , 5 } ;
// imprimer le vecteur
écoute << 'Les chiffres sont : ' ;
pour ( auto & i : des chiffres )
{
écoute << je << ', ' ;
}
retour 0 ;
}

Le code ci-dessus montre l'utilisation de séquentiel conteneurs au format vectoriel, ce qui permet de stocker des tableaux d'entiers. Le programme initialise un vecteur de type entier, lui attribue des valeurs et les imprime à l'aide d'une boucle. Cet exemple montre à quel point il est facile de stocker et d'accéder aux données en C++ en utilisant le conteneur séquentiel .



2 : Conteneurs associatifs

Les conteneurs associatifs nous permettent de stocker des éléments dans l'ordre particulier défini par l'opérateur de comparaison. Contrairement à conteneurs séquentiels , l'ordre des éléments dans conteneurs associatifs est maintenu à l'aide de clés qui permettent aux utilisateurs d'organiser et d'accéder aux éléments. Lorsqu'un élément est inséré dans un conteneur associatif , il est automatiquement trié à la bonne position en fonction de sa clé. Ces types de conteneurs sont implémentés en interne comme des structures de données arborescentes binaires.

Le associatif conteneurs sont classés comme :

  • Carte: une collection de paires clé-valeur qui ont été triées à l'aide de clés uniques
  • Multicarte : une collection de paires clé-valeur qui ont été triées à l'aide de clés
  • Ensemble: Clés uniques collectées et classées par clés.
  • Multiset : une collection de clés qui ont été triées à l'aide de clés

Exemple

Pour illustrer comment un associatif récipient fonctionne, nous utiliserons le définir la classe dans cet exemple.

#include
#include
en utilisant l'espace de noms std ;
int main ( )
{
// initialiser un ensemble de entier taper
ensemble < entier > nombres = { dix , 2 , 16 , 70 , 5 } ;
// imprimer le ensemble
écoute << 'Les chiffres sont : ' ;
pour ( auto & i : des chiffres )
{
écoute << je << ', ' ;
}
retour 0 ;
}

Le code ci-dessus initialise un ensemble d'entiers en C++, qui est un exemple de conteneur associatif. L'ensemble garantit que les éléments sont triés par ordre croissant par défaut. Le code imprime ensuite les nombres de l'ensemble à l'aide d'une boucle for.

3 : Conteneurs associatifs non ordonnés

En C++, associatif non ordonné conteneurs sont utilisés pour fournir les versions non triées d'un associatif récipient . Ils sont implémentés en interne comme des structures de données de table de hachage. Le associatif conteneurs sont classés comme :

  • Carte non ordonnée : une collection de paires clé-valeur qui ont été hachées à l'aide de clés uniques.
  • Multicarte non ordonné : la collection de paires clé-valeur qui a été hachée à l'aide de clés.
  • Ensemble non ordonné : une collection de clés uniques qui ont été hachées à l'aide de clés.
  • Multiset non ordonné : une collection de clés qui ont été hachées à l'aide de clés.

Exemple

Afin d'illustrer comment un associatif non ordonné récipient fonctionne, nous utiliserons le ensemble non ordonné classe dans cet exemple.

#include
#include
en utilisant l'espace de noms std ;
int main ( )
{
// initialiser un unordered_set d'entiers taper
ensemble_non ordonné < entier > nombres = { dix , 2 , 16 , 70 , 5 } ;
// imprimer le ensemble
écoute << 'Les chiffres sont : ' ;
pour ( auto & i : des chiffres )
{
écoute << je << ', ' ;
}
retour 0 ;
}

Conclusion

Une STL C++ récipient est l'objet titulaire pour stocker la collection d'autres objets. Ils fonctionnent de la même manière que les modèles de classe et prennent en charge un grand nombre de types d'éléments. Dans ce tutoriel, nous avons discuté des types de conteneurs STL C++ les plus couramment utilisés, qui sont conteneurs séquentiels, conteneurs associatifs ainsi que conteneurs associatifs non ordonnés .