Partager via


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

multimap

Construit un multimap vide ou une copie de l'ensemble ou d'une partie d'un autre multimap.

Typedef

allocator_type

Type qui représente la classe allocator pour l'objet multimap.

const_iterator

Type qui fournit un itérateur bidirectionnel capable de lire un élément const dans le multimap.

const_pointer

Type qui fournit un pointeur vers un élément const dans un multimap.

const_reference

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.

const_reverse_iterator

Type qui fournit un itérateur bidirectionnel capable de lire n'importe quel élément const dans le multimap.

difference_type

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.

iterator

Type qui fournit la différence entre deux itérateurs qui font référence aux éléments d'un même multimap.

key_compare

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.

key_type

Type qui décrit l'objet de clé de tri qui constitue chaque élément du multimap.

mapped_type

Type qui représente le type de données stocké dans un multimap.

pointer

Type qui fournit un pointeur vers un élément const dans un multimap.

référence

Type qui fournit une référence à un élément stocké dans un multimap.

reverse_iterator

Type qui fournit un itérateur bidirectionnel capable de lire ou de modifier tout élément d'un multimap inversé.

type_taille

Type entier non signé qui fournit un pointeur vers un élément const d'un multimap.

value_type

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

begin

Retourne un itérateur traitant le premier élément d'un multimap.

cbegin

Retourne un itérateur const qui traite le premier élément d'un multimap.

cend

Retourne un itérateur const qui traite l'emplacement situé après le dernier élément d'un multimap.

clear

Efface tous les éléments d'un multimap.

count

Retourne le nombre d'éléments d'un multimap dont la clé correspond à une clé spécifiée par un paramètre.

crbegin

Retourne un itérateur const qui traite le premier élément d'un multimap inversé.

crend

Retourne un itérateur const qui traite l'emplacement qui suit le dernier élément d'un multimap inversé.

emplace

Insère un élément construit sur place dans un multimap.

emplace_hint

Insère un élément construit sur place dans un multimap, avec un indicateur de positionnement.

empty

Vérifie si un multimap est vide.

end

Retourne un itérateur qui traite l'emplacement suivant le dernier élément d'un multimap.

equal_range

Recherche la plage d'éléments dans laquelle se trouve une clé d'élément correspondant à une valeur spécifiée.

erase

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.

find

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.

get_allocator

Retourne une copie de l'objet allocator utilisé pour construire le multimap.

insert

Insère un élément ou une plage d'éléments dans un multimap.

key_comp

Récupère une copie de l'objet de comparaison utilisé pour trier les clés au sein d'un multimap.

lower_bound

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.

max_size

Retourne la longueur maximale du multimap.

rbegin

Retourne un itérateur qui traite le premier élément d'un multimap inversé.

rend

Retourne un itérateur qui traite l'emplacement suivant le dernier élément d'un multimap inversé.

size

Retourne le nombre d'éléments d'un multimap.

échange

Échange les éléments de deux multimap.

upper_bound

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.

value_comp

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

operator=

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)

Concepts

Conteneurs

Autres ressources

<map> membres