multiset, classe
La classe multiset STL est utilisée pour le stockage et la récupération des données d'une collection dans laquelle les valeurs des éléments n'ont pas besoin d'être uniques, et où ces dernières servent de valeurs de clés en fonction desquelles les données sont automatiquement triées. La valeur de clé d'un élément appartenant à une classe multiset ne peut pas être modifiée directement. En effet, les anciennes valeurs doivent être supprimées et les éléments ayant une nouvelle valeur doivent être insérés.
template <
class Key,
class Compare=less<Key>,
class Allocator=allocator<Key>
>
class multiset
Paramètres
Clé
Type de données d'élément à stocker dans la classe multiset.Comparaison
Type qui fournit un objet de fonction pouvant comparer deux valeurs d'éléments comme clés de tri afin de déterminer leur ordre relatif dans la classe multiset. Le prédicat binaire less<Key> est la valeur par défaut.Allocator
Type qui représente l'objet allocateur stocké qui contient des informations sur l'allocation et la désallocation de mémoire de la classe multiset. La valeur par défaut est allocator*<Key>.*
Notes
La classe multiset STL est :
Un conteneur associatif de taille variable qui prend en charge la récupération efficace des valeurs d'éléments selon une valeur de clé associée.
Réversible, car elle fournit des itérateurs bidirectionnels pour accéder à ses éléments.
Triée, car les éléments sont classés par valeur de clé au sein du conteneur, selon une fonction de comparaison spécifiée.
Multiple, car il n'est pas nécessaire que ses éléments aient des clés uniques. Une valeur de clé peut être associée à plusieurs valeurs d'éléments.
Un conteneur associatif simple, car les valeurs de ses éléments sont ses valeurs de clés.
Une classe de modèle, car la fonctionnalité qu'elle fournit est générique et donc indépendante du type de données contenues comme éléments. Le type de données à utiliser est spécifié comme paramètre dans le modèle de la classe, avec la fonction de comparaison et l'allocateur.
L'itérateur fourni par la classe multiset est un itérateur bidirectionnel. Toutefois, les fonctions membres de classe insert et multiset ont des versions qui prennent comme paramètres de modèle un itérateur d'entrée plus faible, dont les spécifications de fonctionnalités sont minimales par rapport à celles garanties par la classe des itérateurs bidirectionnels. Les différents concepts d'itérateurs forment une famille liée par les améliorations de leurs fonctionnalités. Chaque concept d'itérateur possède son propre ensemble de spécifications, et les algorithmes qui fonctionnent avec eux doivent limiter leurs hypothèses aux spécifications fournies par ce type d'itérateur. On peut considérer qu'un itérateur d'entrée peut être déréférencé pour faire référence à un objet et qu'il peut être incrémenté à l'itérateur suivant dans la séquence. Il s'agit d'un jeu minimal de fonctionnalités, mais c'est suffisant pour pouvoir parler de plage d'itérateurs (First, Last) dans le contexte des fonctions membres de la classe.
Le choix du type de conteneur doit être basé en général sur le type de la recherche et de l'insertion requis par l'application. Les conteneurs associatifs sont optimisés pour les opérations de recherche, d'insertion et de suppression. Les fonctions membres qui prennent en charge explicitement ces opérations sont efficaces, car elles les exécutent en un temps qui est, en moyenne, proportionnel au logarithme du nombre d'éléments dans le conteneur. L'insertion d'éléments ne rend aucun itérateur non valide. La suppression d'éléments rend uniquement non valides les itérateurs qui pointaient spécifiquement vers les éléments supprimés.
La classe multiset doit être sélectionnée comme conteneur associatif lorsque les conditions associant les valeurs à leurs clés sont remplies par l'application. Les éléments d'une classe multiset peuvent être nombreux et agir comme leurs propres clés de tri, afin d'éviter que les clés ne soient uniques. Pour ce type de structure, il peut s'agir d'une liste triée de mots qui peuvent apparaître plusieurs fois. Si les occurrences multiples de mots ne sont pas autorisées, c'est un ensemble qu'il convient d'utiliser comme structure de conteneur. Si des définitions uniques sont jointes en tant que valeurs à la liste de mots clés uniques, c'est une classe map qu'il convient d'utiliser comme structure pour la contenance des données. Si les définitions ne sont pas uniques, c'est une classe multimap qu'il convient d'utiliser comme conteneur.
La classe multiset organise la séquence qu'elle contrôle en appelant un objet de fonction stocké de type Compare. Cet objet stocké est une fonction de comparaison à laquelle il est possible d'accéder en appelant la fonction membre key_comp. En général, les éléments ne doivent pas être tout à fait comparables, afin que, à l'aide de deux événements quelconques donnés, il soit possible de déterminer, soit qu'ils soient équivalents (dans le sens où l'un n'est pas inférieur à l'autre), soit que l'un est inférieur à l'autre. Cela entraîne le tri des éléments non équivalents. D'un point de vue plus technique, la fonction de comparaison est un prédicat binaire qui induit un ordre faible strict au sens mathématique du terme. Un prédicat binaire f(x,y) est un objet de fonction qui a deux objets d'arguments x et y, et la valeur de retour true ou false. Un tri appliqué à un ensemble est un ordre faible strict si le prédicat binaire est irréflexif, antisymétrique et transitif, et si l'équivalence est transitive (où deux objets x et y sont définis comme équivalents lorsque f(x,y) et f(y,x) ont la valeur false). Si la plus élevée des conditions d'égalité entre les clés remplace celle de l'équivalence, alors le tri devient total (dans le sens où tous les éléments sont classés les uns par rapport aux autres), et les clés correspondantes seront alors impossibles à différencier les unes des autres.
Constructeurs
Construit un multiset vide ou une copie de l'ensemble ou d'une partie d'un multiset spécifié. |
Typedef
Typedef pour la classe allocator de l'objet multiset. |
|
Typedef pour un itérateur bidirectionnel qui peut lire un élément const dans le multiset. |
|
Typedef pour un pointeur vers un élément const dans un multiset. |
|
Typedef pour une référence à un élément const stocké dans un multiset pour lire et effectuer des opérations const. |
|
Typedef pour un itérateur bidirectionnel qui peut lire n'importe quel élément const dans le multiset. |
|
Typedef entier signé pour le nombre d'éléments d'un multiset compris dans une plage d'éléments pointés par des itérateurs. |
|
Typedef pour un itérateur bidirectionnel qui permet de lire ou de modifier tout élément d'un multiset. |
|
Typedef pour un objet de fonction qui peut comparer deux clés pour déterminer l'ordre relatif de deux éléments d'un multiset. |
|
Typedef pour un objet de fonction qui peut comparer deux clés de tri pour déterminer l'ordre relatif de deux éléments d'un multiset. |
|
Typedef pour un pointeur vers un élément d'un multiset. |
|
Typedef pour une référence à un élément stocké dans un multiset. |
|
Typedef pour un itérateur bidirectionnel qui permet de lire ou de modifier un élément d'un multiset inversé. |
|
Type entier non signé qui peut représenter le nombre d'éléments dans un multiset. |
|
Typedef pour un objet de fonction qui peut comparer deux éléments en tant que clés de tri pour déterminer leur ordre relatif au sein d'un multiset. |
|
Typedef qui décrit un objet stocké en tant qu'élément comme un multiset par sa capacité en tant que valeur. |
Fonctions membres
Retourne un itérateur qui pointe vers le premier élément d'un multiset. |
|
Retourne un itérateur const qui traite le premier élément d'un multiset. |
|
Retourne un itérateur const qui traite l'emplacement situé après le dernier élément d'un multiset. |
|
Efface tous les éléments d'un multiset. |
|
Retourne le nombre d'éléments d'un multiset dont la clé correspond à celle spécifiée en tant que paramètre. |
|
Retourne un itérateur const qui traite le premier élément d'un ensemble inversé. |
|
Retourne un itérateur const qui traite l'emplacement qui suit le dernier élément d'un ensemble inversé. |
|
Insère un élément construit sur place dans un multiset. |
|
Insère un élément construit sur place dans un multiset, avec un indicateur de positionnement. |
|
Vérifie si un multiset est vide. |
|
Retourne un itérateur qui pointe vers l'emplacement situé après le dernier élément d'un multiset. |
|
Retourne une paire d'itérateurs. Le premier itérateur de la paire pointe vers le premier élément d'un multiset avec une clé qui est supérieure à celle spécifiée. Le deuxième itérateur de la paire pointe vers le premier élément du multiset avec une clé dont la valeur est supérieure ou égale à la clé spécifiée. |
|
Supprime d'un emplacement spécifié un élément ou une plage d'éléments compris dans un multiset ou supprime les éléments qui correspondent à une clé spécifiée. |
|
Retourne un itérateur qui pointe vers le premier emplacement d'un élément d'un multiset dont la clé est égale à la clé spécifiée. |
|
Retourne une copie de l'objet allocator qui est utilisé pour construire le multiset. |
|
Insère un élément ou une plage d'éléments dans un multiset. |
|
Fournit un objet de fonction qui peut comparer deux clés de tri pour déterminer l'ordre relatif de deux éléments d'un multiset. |
|
Retourne un itérateur au premier élément d'un multiset avec une valeur de clé supérieure ou égale à celle de la clé spécifiée. |
|
Retourne la longueur maximale du multiset. |
|
Retourne un itérateur qui pointe vers le premier élément d'un multiset inversé. |
|
Retourne un itérateur qui pointe vers l'emplacement situé après le dernier élément d'un multiset inversé. |
|
Retourne le nombre d'éléments contenus dans un multiset. |
|
Échange les éléments de deux multiset. |
|
Retourne un itérateur au premier élément d'un multiset avec une valeur de clé supérieure à celle de la clé spécifiée. |
|
Récupère une copie de l'objet de comparaison utilisé pour trier les valeurs d'éléments dans un multiset. |
Opérateurs
Remplace les éléments d'un multiset par une copie d'un autre multiset. |
Configuration requise
En-tête : <set>
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)