unordered_multimap, classe
La classe de modèle décrit un objet qui contrôle une séquence de longueur variable constituée d'éléments de type std::pair<const Key, Ty>. La séquence est triée par ordre faible avec une fonction de hachage, qui partitionne la séquence en un ensemble trié de sous-séquences appelées compartiments. Dans chaque compartiment, une fonction de comparaison détermine si des paires d'éléments possèdent un ordre équivalent. Chaque élément stocke deux objets, une clé de tri et une valeur. La séquence est représentée de façon à permettre la recherche, l'insertion et la suppression d'un élément arbitraire à l'aide d'un certain nombre d'opérations qui peut être indépendant du nombre d'éléments de la séquence (temps constant), du moins lorsque les compartiments sont de longueur à peu près équivalente. Dans le pire des cas, lorsque tous les éléments se trouvent dans un compartiment, le nombre d'opérations est proportionnel au nombre d'éléments de la séquence (temps linéaire). De plus, l'insertion d'un élément n'entraîne pas la non validité des itérateurs, et la suppression d'un élément ne rend non valides que les itérateurs qui pointent vers l'élément supprimé.
template<class Key,
class Ty,
class Hash = std::hash<Key>,
class Pred = std::equal_to<Key>,
class Alloc = std::allocator<Key> >
class unordered_multimap;
Paramètres
Paramètre |
Description |
Key |
Type de clé. |
Ty |
Type mappé. |
Hash |
Type d'objet de la fonction de hachage. |
Pred |
Type d'objet de fonction de comparaison d'égalité. |
Alloc |
Classe allocator. |
Membres
Définition de types |
Description |
Type d'un allocateur pour la gestion du stockage. |
|
Type d'un itérateur constant pour la séquence contrôlée. |
|
Type d'un itérateur de compartiment constant pour la séquence contrôlée. |
|
Type d'un pointeur constant vers un élément. |
|
Type d'une référence constante à un élément. |
|
Type d'une distance signée entre deux éléments. |
|
Type de la fonction de hachage. |
|
Type d'un itérateur pour la séquence contrôlée. |
|
Type de la fonction de comparaison. |
|
Type d'une clé de tri. |
|
Type d'un itérateur de compartiment pour la séquence contrôlée. |
|
Type d'une valeur mappée associée à chaque clé. |
|
Type d'un pointeur vers un élément. |
|
Type d'une référence à un élément. |
|
Type d'une distance non signée entre deux éléments. |
|
Type d'un élément. |
Fonction membre |
Description |
Désigne le début de la séquence contrôlée. |
|
Obtient le numéro du compartiment pour une valeur de clé. |
|
Obtient le nombre de compartiments. |
|
Obtient la taille d'un compartiment. |
|
Désigne le début de la séquence contrôlée. |
|
Désigne la fin de la séquence contrôlée. |
|
Supprime tous les éléments. |
|
Recherche le nombre d'éléments qui correspondent à une clé spécifiée. |
|
Ajoute un élément construit sur place. |
|
Ajoute un élément construit sur place, avec un indicateur. |
|
Vérifie l'absence d'éléments. |
|
Désigne la fin de la séquence contrôlée. |
|
Recherche une plage qui correspond à une clé spécifiée. |
|
Supprime les éléments placés aux positions spécifiées. |
|
Recherche un élément qui correspond à une clé spécifiée. |
|
Obtient l'objet allocateur stocké. |
|
Obtient l'objet de fonction de hachage stocké. |
|
Ajoute des éléments. |
|
Obtient l'objet de fonction de comparaison stocké. |
|
Compte le nombre moyen d'éléments par compartiment. |
|
Obtient le nombre maximal de compartiments. |
|
Obtient ou définit le nombre maximal d'éléments par compartiment. |
|
Obtient ou définit la taille maximale de la séquence contrôlée. |
|
Régénère la table de hachage. |
|
Compte le nombre d'éléments. |
|
Échange le contenu de deux conteneurs. |
|
Construit un objet conteneur. |
Opérateur |
Description |
Copie une table de hachage. |
Notes
L'objet trie la séquence qu'il contrôle en appelant deux objets stockés, un objet de fonction de comparaison de type unordered_multimap::key_equal et un objet de fonction de hachage de type unordered_multimap::hasher. Pour accéder au premier objet stocké, appelez la fonction membre unordered_multimap::key_eq(). Pour accéder au second objet stocké, appelez la fonction membre unordered_multimap::hash_function(). Pour toutes les valeurs X et Y de type Key, l'appel key_eq()(X, Y) retourne true uniquement si les valeurs des deux arguments ont un classement équivalent. L'appel hash_function()(keyval) génère une distribution des valeurs de type size_t. Contrairement à la classe de modèle unordered_map, classe, un objet de classe de modèle unordered_multimap ne garantit pas que key_eq()(X, Y) est toujours false pour deux des éléments de la séquence contrôlée. Il n'est pas nécessaire que les clés soient uniques.
L'objet stocke également un facteur de charge maximale, qui spécifie le nombre moyen maximal d'éléments souhaité par compartiment. Si après l'insertion d'un élément, unordered_multimap::load_factor() dépasse le facteur de charge maximale, le conteneur augmente le nombre de compartiments et régénère la table de hachage si nécessaire.
L'ordre réel des éléments de la séquence contrôlée dépend de la fonction de hachage, de la fonction de comparaison, de l'ordre d'insertion, du facteur de charge maximale et du nombre de compartiments. En général, il n'est pas possible de prévoir l'ordre des éléments de la séquence contrôlée. Toutefois, vous avez la garantie que tous les sous-ensembles d'éléments dont le classement est équivalent sont adjacents dans la séquence contrôlée.
L'objet alloue et libère du stockage pour la séquence qu'il contrôle via un objet allocateur stocké de type unordered_multimap::allocator_type. Un tel objet allocateur doit avoir la même interface externe qu'un objet de classe de modèle allocator. Notez que l'objet allocateur stocké n'est pas copié lorsque l'objet conteneur est assigné.
Configuration requise
En-tête : <unordered_map>
Espace de noms : std
Voir aussi
Référence
Sécurité des threads dans la bibliothèque standard C++
Bibliothèque STL (Standard Template Library)