multimap, classe
La classe multimap STL est utilisée pour le stockage et la récupération des données d'une collection dans laquelle chaque élément est une paire constituée d'une valeur de données et d'une clé de tri. La valeur de la clé n'a pas besoin d'être unique. En outre, elle est utilisée pour le tri automatique des données. La valeur d'un élément d'une classe multimap peut être modifiée directement, mais pas la valeur de clé qui lui est associée. Les valeurs de clés associées aux anciens éléments doivent être supprimées, et de nouvelles valeurs de clés doivent être associées aux nouveaux éléments insérés.
template <
class Key,
class Type,
class Traits=less<Key>,
class Allocator=allocator<pair <const Key, Type> >
> class multimap;
Paramètres
Key
Type de données clé à stocker dans la classe multimap.Type
Type de données d'élément à stocker dans la classe multimap.Traits
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 multimap. 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 map. Cet argument est facultatif et sa valeur par défaut est allocator<pair <const Key, Type> >.
Notes
La classe multimap 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 possèdent des clés uniques, ce qui permet à une valeur de clé d'être associée à plusieurs valeurs de données d'éléments.
Un conteneur associatif de paires, car ses valeurs de données d'éléments sont séparées de 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 ou comme clés. Les types de données utilisés pour les éléments et les clés sont eux spécifiés comme paramètres dans la classe de modèle avec la fonction de comparaison et l'allocateur.
L'itérateur fourni par la classe map est un itérateur bidirectionnel. Toutefois, les fonctions membres de classe insert et multimap 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 multimap doit être sélectionnée comme conteneur associatif lorsque les conditions associant les valeurs à leurs clés sont remplies par l'application. Pour ce type de structure, il peut s'agir d'une liste triée de mots clés avec des valeurs de chaîne associées fournissant par exemple des définitions, où les mots n'ont pas toujours été définis de manière unique. Si, en revanche, les mots clés sont définis de manière unique afin que les clés soient uniques, il convient d'utiliser une classe map comme conteneur. Si, en revanche, seule la liste de mots a été stockée, il convient d'utiliser une classe set comme conteneur. Si de multiples occurrences de mots sont autorisées, il convient d'utiliser une classe multiset comme structure de conteneur.
La classe multimap trie la séquence qu'elle contrôle en appelant un objet de fonction stocké de type key_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'argument x et y, et une 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) sont 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.
Membres
Constructeurs
Construit un multimap vide ou une copie de l'ensemble ou d'une partie d'un autre multimap. |
Typedef
Type qui représente la classe allocator pour l'objet multimap. |
|
Type qui fournit un itérateur bidirectionnel capable de lire un élément const dans le multimap. |
|
Type qui fournit un pointeur vers un élément const dans un multimap. |
|
Type qui fournit une référence à un élément const stocké dans un multimap pour la lecture et l'exécution des opérations const. |
|
Type qui fournit un itérateur bidirectionnel capable de lire n'importe quel élément const dans le multimap. |
|
Type entier signé qui peut être utilisé pour représenter le nombre d'éléments d'un multimap au sein d'une plage, parmi les éléments pointés par les itérateurs. |
|
Type qui fournit la différence entre deux itérateurs qui font référence aux éléments d'un même multimap. |
|
Type qui fournit un objet de fonction pouvant comparer deux clés de tri pour déterminer l'ordre relatif de deux éléments au sein d'un multimap. |
|
Type qui décrit l'objet de clé de tri qui constitue chaque élément du multimap. |
|
Type qui représente le type de données stocké dans un multimap. |
|
Type qui fournit un pointeur vers un élément const dans un multimap. |
|
Type qui fournit une référence à un élément stocké dans un multimap. |
|
Type qui fournit un itérateur bidirectionnel capable de lire ou de modifier tout élément d'un multimap inversé. |
|
Type entier non signé qui fournit un pointeur vers un élément const d'un multimap. |
|
Type qui fournit un objet de fonction pouvant comparer deux éléments comme clés de tri pour déterminer leur ordre relatif dans le multimap. |
Fonctions membres
Retourne un itérateur traitant le premier élément d'un multimap. |
|
Retourne un itérateur const qui traite le premier élément d'un multimap. |
|
Retourne un itérateur const qui traite l'emplacement situé après le dernier élément d'un multimap. |
|
Efface tous les éléments d'un multimap. |
|
Retourne le nombre d'éléments d'un multimap dont la clé correspond à une clé spécifiée par un paramètre. |
|
Retourne un itérateur const qui traite le premier élément d'un multimap inversé. |
|
Retourne un itérateur const qui traite l'emplacement qui suit le dernier élément d'un multimap inversé. |
|
Insère un élément construit sur place dans un multimap. |
|
Insère un élément construit sur place dans un multimap, avec un indicateur de positionnement. |
|
Vérifie si un multimap est vide. |
|
Retourne un itérateur qui traite l'emplacement suivant le dernier élément d'un multimap. |
|
Recherche la plage d'éléments dans laquelle se trouve une clé d'élément correspondant à une valeur spécifiée. |
|
Supprime d'un emplacement spécifié un élément ou une plage d'éléments compris dans un multimap ou supprime les éléments qui correspondent à une clé spécifiée. |
|
Retourne un itérateur qui traite le premier emplacement d'un élément dans un multimap possédant une clé équivalente à une clé spécifiée. |
|
Retourne une copie de l'objet allocator utilisé pour construire le multimap. |
|
Insère un élément ou une plage d'éléments dans un multimap. |
|
Récupère une copie de l'objet de comparaison utilisé pour trier les clés au sein d'un multimap. |
|
Retourne un itérateur au premier élément d'un multimap avec une valeur de clé supérieure ou égale à celle de la clé spécifiée. |
|
Retourne la longueur maximale du multimap. |
|
Retourne un itérateur qui traite le premier élément d'un multimap inversé. |
|
Retourne un itérateur qui traite l'emplacement suivant le dernier élément d'un multimap inversé. |
|
Retourne le nombre d'éléments d'un multimap. |
|
Échange les éléments de deux multimap. |
|
Retourne un itérateur au premier élément d'un multimap avec une valeur de clé supérieure à celle de la clé spécifiée. |
|
La fonction membre retourne un objet de fonction qui détermine l'ordre des éléments d'un multimap en comparant leurs valeurs de clés. |
Opérateurs
Remplace les éléments d'un multimap par une copie d'un autre multimap. |
Configuration requise
En-tête : <map>
Espace de noms : std
Les paires (clé, valeur) sont stockées dans une classe multimap en tant qu'objets de type pair. La classe pair nécessite l'en-tête <utility>, qui est inclus automatiquement par <map>.
Voir aussi
Référence
Sécurité des threads dans la bibliothèque standard C++
Bibliothèque STL (Standard Template Library)