unordered_multiset Class
la classe de modèle décrit un objet qui contrôle une séquence de la longueur variée d'éléments de type const Key.La séquence est faiblement classée par une fonction de hachage, qui partitionne la séquence en un ensemble ordonné de sous-séquences appelés compartiments restant.Dans chaque compartiment une fonction de comparaison détermine si une paire d'éléments a classer équivalent.chaque élément sert de clé de tri et de valeur.La séquence sont représentées d'une manière qui permet la recherche, l'insertion, et la suppression d'un élément arbitraire avec un certain nombre d'opérations qui peuvent être indépendante du nombre d'éléments dans la séquence (temps fixe), du moins lorsque toutes les compartiments sont sensiblement de longueur égale.Dans le pire des cas, lorsque tous les éléments sont dans un compartiment, le nombre d'opérations est proportionnel au nombre d'éléments dans la séquence (temps linéaire).De plus, insérez un élément n'invalide aucun itérateur, et suppression d'un élément invalide uniquement les itérateurs qui pointent vers l'élément supprimé.
template<class Key,
class Hash = std::hash<Key>,
class Pred = std::equal_to<Key>,
class Alloc = std::allocator<Key> >
class unordered_multiset;
Paramètres
Paramètre |
Description |
Key |
le type de clé. |
Hash |
le type d'objet de fonction de hachage. |
Pred |
le type d'objet de fonction de comparaison d'égalité. |
Alloc |
La classe de l'allocateur. |
Membres
définition de type |
Description |
le type d'un allocateur pour gérer le stockage. |
|
Le type d'un itérateur constante pour la séquence contrôlée. |
|
Le type d'un itérateur fixe de compartiment pour la séquence contrôlée. |
|
le type d'un pointeur constant à un élément. |
|
Le type d'une référence à une constante à un élément. |
|
le type d'une distance signée entre deux éléments. |
|
le type de la fonction de hachage. |
|
Le type d'un itérateur pour la séquence contrôlée. |
|
le type de la fonction de comparaison. |
|
Le type d'une clé de classement. |
|
Le type d'un itérateur de compartiment pour la séquence contrôlée. |
|
le type d'un pointeur à un élément. |
|
le type d'une référence à un élément. |
|
le type d'une distance non signée entre deux éléments. |
|
le type d'un élément. |
fonction membre |
Description |
Désigne le début de la séquence contrôlée. |
|
Obtient le numéro de compartiment pour une valeur de clé. |
|
Obtient le nombre de compartiments restant. |
|
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 correspondant à une clé spécifiée. |
|
ajoute un élément construit en place. |
|
ajoute un élément construit en place, avec l'indicateur. |
|
teste si aucun élément n'est présent. |
|
Désigne la fin de la séquence contrôlée. |
|
les recherches s'étendent 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 d'allocation stocké. |
|
obtient l'objet stocké de fonction de hachage. |
|
ajoute des éléments. |
|
obtient l'objet stocké de fonction de comparaison. |
|
Compte les éléments moyens par compartiment. |
|
Obtient le nombre maximal de compartiments restant. |
|
Obtient ou définit des éléments de threads compartiment. |
|
Obtient 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. |
Opérateur |
Description |
copie une table de hachage. |
Notes
L'objet classe la séquence qu'il contrôle en appelant deux objets stockés, un objet de fonction de comparaison de type unordered_multiset::key_equal et un objet de fonction de hachage de type unordered_multiset::hasher.vous accédez au premier objet enregistré en appelant la fonction membre unordered_multiset::key_eq(); et vous accédez au deuxième objet stocké en appelant la fonction membre unordered_multiset::hash_function().Spécifiquement, pour toutes les valeurs X et Y de type Key, l'appel key_eq()(X, Y) retourne la valeur true uniquement si les deux valeurs d'argument ont le classement équivalents ; l'appel hash_function()(keyval) produit une distribution des valeurs de type size_t.Contrairement à la classe de modèle unordered_set Class, un objet de classe de modèle unordered_multiset ne garantit pas qu' key_eq()(X, Y) est toujours false pour deux éléments de de la séquence contrôlée.(Les clés n'ont pas besoin d'être uniques.)
L'objet stocke également un facteur de charge maximale, qui spécifie le nombre moyen souhaité à maximal d'éléments par compartiment.Si insérer un élément fait dépasser par unordered_multiset::load_factor() le facteur de charge maximale, le conteneur augmente le nombre de compartiments et régénère la table de hachage si nécessaire.
La commande réelle des éléments dans la séquence contrôlée dépend de la fonction de hachage, la fonction de comparaison, la commande de mise en place, le facteur de charge maximale ; le nombre actuel de compartiments restant.Vous ne pouvez généralement pas prédire l'ordre des éléments dans la séquence contrôlée.Vous pouvez toujours être sûr, cependant, que tout sous-ensemble d'éléments qui ont le classement équivalent sont situées dans la séquence contrôlée.
L'objet alloue et libère le stockage pour la séquence qu'elle contrôle via un objet d'allocation stocké de type unordered_multiset::allocator_type.un tel objet d'allocation doit avoir la même interface externe comme objet de classe de modèle allocator.Notez que l'objet d'allocation stocké n'est pas copié lorsque l'objet conteneur est assigné.
Configuration requise
en-tête : <unordered_set>
l'espace de noms : type