Conteneurs STL
La bibliothèque (STL) de modèles Standard fournit plusieurs conteneurs pour stocker des collections d'objets connexes.Les conteneurs sont toutes les classes de modèle, ce qui vous permet de spécifier quels objets sont autorisés dans les conteneurs.Cette rubrique fournit une vue d'ensemble des conteneurs STL pour vous aider à déterminer quel conteneur est le mieux à vos besoins.
Il existe deux bibliothèques STL à choisir de : natif STL et STL/CLR.Pour plus d'informations sur STL/CLR, consultez Référence de bibliothèque STL/CLR.
Les conteneurs dans STL peuvent être divisées en trois catégories, conteneurs de séquence, conteneurs associatifs, et adaptateurs du conteneur.Ces catégories, et des collections qui appartiennent à chaque catégorie, sont présentées ici.Informations plus détaillées se trouvent dans la documentation de référence pour les conteneurs.
conteneurs de séquence
Les conteneurs de séquence conservent l'ordre d'origine des éléments insérés.Cela vous permet de spécifier où insérer l'élément dans le conteneur.
Le conteneur d' deque (file d'attente double) autorise les insertions et des suppressions rapides au début et à la fin de le conteneur.Vous pouvez également accéder aléatoirement à tout élément rapidement.
Le conteneur d' list autorise les insertions et des suppressions rapides n'importe où dans le conteneur, mais vous ne pouvez pas accéder directement un élément dans le conteneur.
Le conteneur d' vector se comporte comme un tableau, mais se développe automatiquement au besoin.
pour plus d'informations sur les conteneurs de séquence, consultez le tableau suivant :
Conteneur |
natif STL |
STL/CLR |
---|---|---|
deque |
||
list |
||
vector |
conteneurs associatifs
La caractérisés des conteneurs associatifs est que les éléments sont insérés dans un ordre prédéfinie, telle que l'ordre trié.
Les conteneurs associatifs peuvent être regroupés en deux sous-ensembles : mappages et jeux.map, parfois appelée génération d'un dictionnaire, se compose d'une paire clé/valeur.La clé est utilisée pour trier la séquence, et la valeur est d'une façon ou associée à cette clé.Par exemple, map peut contenir des clés représentant chaque mot unique dans un texte et des valeurs représentant le nombre de fois que le mot apparaît dans le texte.set est simplement un conteneur croissant des éléments uniques.
map et set permettent une seule instance d'une clé de l'élément ou à insérer dans le conteneur.Si plusieurs instances des éléments sont obligatoires, utilisez multimap ou multiset.
Mappages et itérateurs bidirectionnelles de support de jeux.Pour plus d'informations sur les itérateurs, consultez l' Itérateurs.
Pendant que pas officiellement partie de la norme STL, hash_map et hash_set sont généralement utilisés pour améliorer rechercher des heures.Ces conteneurs stockent leurs éléments en tant que table de hachage, chaque entrée de table contenant une liste liée bidirectionnelle d'éléments.Pour vérifier que les temps de recherche les plus rapides, assurez -vous que l'algorithme de hachage pour vos éléments retourne des valeurs de hachage également distribuées.
pour plus d'informations sur les conteneurs associatifs, consultez le tableau suivant :
Conteneur |
natif STL |
STL/CLR |
---|---|---|
hash_map |
||
hash_multimap |
||
hash_multiset |
||
hash_set |
||
map |
||
multimap |
||
multiset |
||
set |
adaptateurs de conteneur
Les adaptateurs du conteneur sont simplement des modifications dans les conteneurs ci-dessus.Les adaptateurs du conteneur ne prennent pas en charge les itérateurs.
Le conteneur d' priority_queue a planifié sorte que l'élément avec la valeur la plus élevée est toujours premier dans la file d'attente.
Le conteneur d' queue suit la sémantique FIFO (premier dans, en premier).Le premier élément inséré (enfoncé) dans la file d'attente est le premier à supprimer (dépilé).
Le conteneur d' stack suit la sémantique LIFO (dernier dans, en premier).Le dernier élément à insérer (enfoncé) sur la pile est le premier élément à supprimer (dépilé).
Étant donné que les adaptateurs du conteneur ne prennent pas en charge les itérateurs, ils ne peuvent pas être utilisés avec les algorithmes STL.Pour plus d'informations sur les algorithmes, consultez l' Algorithmes.
pour plus d'informations sur les adaptateurs de conteneur, consultez le tableau suivant :
Conteneur |
natif STL |
STL/CLR |
---|---|---|
priority_queue |
||
queue |
||
stack |
Spécifications pour les éléments conteneurs
Les éléments insérés dans un conteneur STL peuvent être de tout type d'objet qui fournit un constructeur de copie public, un destructeur public, et un opérateur d'assignation public.Le destructeur ne peut pas lever d'exception.en outre, les conteneurs associatifs tels qu' set et l' map doivent avoir un opérateur de comparaison public défini, qui est operator< par défaut.Certaines opérations sur les conteneurs peuvent également requérir un constructeur public par défaut et un opérateur d'équivalence public.
éléments conteneur de accès
Les éléments des conteneurs sont accessibles à l'aide de les itérateurs.Pour plus d'informations, consultez Itérateurs.
[!REMARQUE]
Vous pouvez également utiliser pour chaque, dans pour itérer au sein de les collections STL.Pour plus d'informations, consultez Comment : Itérez au sein de la collection STL avec pour chaque.