Partager via


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

unordered_multimap::allocator_type

Type d'un allocateur pour la gestion du stockage.

unordered_multimap::const_iterator

Type d'un itérateur constant pour la séquence contrôlée.

unordered_multimap::const_local_iterator

Type d'un itérateur de compartiment constant pour la séquence contrôlée.

unordered_multimap::const_pointer

Type d'un pointeur constant vers un élément.

unordered_multimap::const_reference

Type d'une référence constante à un élément.

unordered_multimap::difference_type

Type d'une distance signée entre deux éléments.

unordered_multimap::hasher

Type de la fonction de hachage.

unordered_multimap::iterator

Type d'un itérateur pour la séquence contrôlée.

unordered_multimap::key_equal

Type de la fonction de comparaison.

unordered_multimap::key_type

Type d'une clé de tri.

unordered_multimap::local_iterator

Type d'un itérateur de compartiment pour la séquence contrôlée.

unordered_multimap::mapped_type

Type d'une valeur mappée associée à chaque clé.

unordered_multimap::pointer

Type d'un pointeur vers un élément.

unordered_multimap::reference

Type d'une référence à un élément.

unordered_multimap::size_type

Type d'une distance non signée entre deux éléments.

unordered_multimap::value_type

Type d'un élément.

Fonction membre

Description

unordered_multimap::begin

Désigne le début de la séquence contrôlée.

unordered_multimap::bucket

Obtient le numéro du compartiment pour une valeur de clé.

unordered_multimap::bucket_count

Obtient le nombre de compartiments.

unordered_multimap::bucket_size

Obtient la taille d'un compartiment.

unordered_multimap::cbegin

Désigne le début de la séquence contrôlée.

unordered_multimap::cend

Désigne la fin de la séquence contrôlée.

unordered_multimap::clear

Supprime tous les éléments.

unordered_multimap::count

Recherche le nombre d'éléments qui correspondent à une clé spécifiée.

unordered_multimap::emplace

Ajoute un élément construit sur place.

unordered_multimap::emplace_hint

Ajoute un élément construit sur place, avec un indicateur.

unordered_multimap::empty

Vérifie l'absence d'éléments.

unordered_multimap::end

Désigne la fin de la séquence contrôlée.

unordered_multimap::equal_range

Recherche une plage qui correspond à une clé spécifiée.

unordered_multimap::erase

Supprime les éléments placés aux positions spécifiées.

unordered_multimap::find

Recherche un élément qui correspond à une clé spécifiée.

unordered_multimap::get_allocator

Obtient l'objet allocateur stocké.

unordered_multimap::hash_function

Obtient l'objet de fonction de hachage stocké.

unordered_multimap::insert

Ajoute des éléments.

unordered_multimap::key_eq

Obtient l'objet de fonction de comparaison stocké.

unordered_multimap::load_factor

Compte le nombre moyen d'éléments par compartiment.

unordered_multimap::max_bucket_count

Obtient le nombre maximal de compartiments.

unordered_multimap::max_load_factor

Obtient ou définit le nombre maximal d'éléments par compartiment.

unordered_multimap::max_size

Obtient ou définit la taille maximale de la séquence contrôlée.

unordered_multimap::rehash

Régénère la table de hachage.

unordered_multimap::size

Compte le nombre d'éléments.

unordered_multimap::swap

Échange le contenu de deux conteneurs.

unordered_multimap::unordered_multimap

Construit un objet conteneur.

Opérateur

Description

unordered_multimap::operator=

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

<unordered_map>

Sécurité des threads dans la bibliothèque standard C++

Bibliothèque STL (Standard Template Library)

Concepts

Conteneurs