Namespaces
Variants

std:: flat_multimap

From cppreference.net
Défini dans l'en-tête <flat_map>
template <

class Key,
class T,
class Compare = std:: less < Key > ,
class KeyContainer = std:: vector < Key > ,
class MappedContainer = std:: vector < T >

> class flat_multimap ;
(depuis C++23)

Le flat multimap est un adaptateur de conteneur qui fournit les fonctionnalités d'un conteneur associatif contenant des paires clé-valeur, tout en permettant plusieurs entrées avec la même valeur de clé. Les clés sont triées en utilisant la fonction de comparaison Compare .

Le modèle de classe flat_multimap agit comme un wrapper pour les deux conteneurs sous-jacents, passés en tant qu'objets de type KeyContainer et MappedContainer respectivement. Le premier conteneur est trié, et pour chaque clé sa valeur correspondante se trouve dans le deuxième conteneur au même index (décalage). Le nombre d'éléments dans les deux conteneurs est identique.

Partout où la bibliothèque standard utilise les exigences Compare , l'unicité est déterminée en utilisant la relation d'équivalence. Informellement, deux objets a et b sont considérés équivalents si aucun n'est comparé comme inférieur à l'autre : ! comp ( a, b ) && ! comp ( b, a ) .


std::flat_multimap satisfait aux exigences de Container , ReversibleContainer , exigences optionnelles de conteneur , et toutes les exigences de AssociativeContainer (y compris la complexité de recherche logarithmique), sauf que :

  • les exigences relatives aux nœuds ne sont pas applicables,
  • les exigences d'invalidation des itérateurs diffèrent,
  • la complexité des opérations d'insertion et d'effacement est linéaire.

Un multimap plat prend en charge la plupart des AssociativeContainer opérations qui utilisent des clés équivalentes.

Toutes les fonctions membres de std::flat_multimap sont constexpr : il est possible de créer et d'utiliser des objets std::flat_multimap lors de l'évaluation d'une expression constante.

Cependant, les objets std::flat_multimap ne peuvent généralement pas être constexpr , car toute mémoire allouée dynamiquement doit être libérée lors de la même évaluation d'expression constante.

(depuis C++26)

Table des matières

Invalidation des itérateurs

Paramètres du modèle

Key - Le type des clés. Le programme est mal formé si Key n'est pas du même type que KeyContainer::value_type .
T - Le type des valeurs mappées. Le programme est mal formé si T n'est pas du même type que MappedContainer::value_type .
Compare - Un type Compare fournissant un ordre strict faible.
KeyContainer
MappedContainer
- Les types des conteneurs sous-jacents SequenceContainer pour stocker respectivement les clés et les valeurs mappées. Les itérateurs de ces conteneurs doivent satisfaire LegacyRandomAccessIterator ou modéliser random_access_iterator . Les invocations de leurs fonctions membres size et max_size ne doivent pas sortir via une exception.

Les conteneurs standards std::vector et std::deque satisfont à ces exigences.

Types membres

Type Définition
key_container_type KeyContainer
mapped_container_type MappedContainer
key_type Key
mapped_type T
value_type std:: pair < key_type, mapped_type >
key_compare Compare
reference std:: pair < const key_type & , mapped_type & >
const_reference std:: pair < const key_type & , const mapped_type & >
size_type std::size_t
difference_type std::ptrdiff_t
iterator défini par l'implémentation LegacyInputIterator , ConstexprIterator (depuis C++26) et random_access_iterator vers value_type
const_iterator défini par l'implémentation LegacyInputIterator , ConstexprIterator (depuis C++26) et random_access_iterator vers const value_type
reverse_iterator std:: reverse_iterator < iterator >
const_reverse_iterator std:: reverse_iterator < const_iterator >
containers type décrivant les conteneurs sous-jacents

struct containers
{
key_container_type keys ;
mapped_container_type values ;
} ;

Classes membres

compare les objets de type value_type
(classe)

Objets membres

Membre Description
containers c (privé) les conteneurs adaptés
( objet membre d'exposition uniquement* )
key_compare compare (privé) l'objet fonction de comparaison
( objet membre d'exposition uniquement* )

Fonctions membres

construit le flat_multimap
(fonction membre publique)
(destructor)
(implicitly declared)
détruit chaque élément de l'adaptateur de conteneur
(fonction membre publique)
assigne des valeurs à l'adaptateur de conteneur
(fonction membre publique)
Itérateurs
retourne un itérateur vers le début
(fonction membre publique)
retourne un itérateur vers la fin
(fonction membre publique)
retourne un itérateur inverse vers le début
(fonction membre publique)
retourne un itérateur inverse vers la fin
(fonction membre publique)
Capacité
vérifie si l'adaptateur de conteneur est vide
(fonction membre publique)
retourne le nombre d'éléments
(fonction membre publique)
retourne le nombre maximum possible d'éléments
(fonction membre publique)
Modificateurs
construit l'élément en place
(fonction membre publique)
construit des éléments en place en utilisant un indice
(fonction membre publique)
insère des éléments
(fonction membre publique)
insère une plage d'éléments
(fonction membre publique)
extrait les conteneurs sous-jacents
(fonction membre publique)
remplace les conteneurs sous-jacents
(fonction membre publique)
efface les éléments
(fonction membre publique)
échange le contenu
(fonction membre publique)
efface le contenu
(fonction membre publique)
Recherche
trouve l'élément avec une clé spécifique
(fonction membre publique)
retourne le nombre d'éléments correspondant à une clé spécifique
(fonction membre publique)
vérifie si le conteneur contient un élément avec une clé spécifique
(fonction membre publique)
retourne un itérateur vers le premier élément non inférieur à la clé donnée
(fonction membre publique)
retourne un itérateur vers le premier élément supérieur à la clé donnée
(fonction membre publique)
retourne la plage d'éléments correspondant à une clé spécifique
(fonction membre publique)
Observateurs
renvoie la fonction qui compare les clés
(fonction membre publique)
renvoie la fonction qui compare les clés dans les objets de type value_type
(fonction membre publique)
accès direct au conteneur de clés sous-jacent
(fonction membre publique)
accès direct au conteneur de valeurs sous-jacent
(fonction membre publique)

Fonctions non membres

compare lexicographiquement les valeurs de deux flat_multimap s
(modèle de fonction)
spécialise l'algorithme std::swap
(modèle de fonction)
efface tous les éléments satisfaisant des critères spécifiques
(modèle de fonction)

Classes d'assistance

spécialise le std::uses_allocator trait de type
(spécialisation de modèle de classe)

Étiquettes

indique que les éléments d'une plage sont triés (l'unicité n'est pas requise)
(balise)

Guides de déduction

Notes

Les types membres iterator et const_iterator peuvent être des alias vers le même type. Cela signifie que définir une paire de surcharges de fonction utilisant ces deux types comme types de paramètres peut violer la Règle de Définition Unique . Étant donné que iterator est convertible en const_iterator , une fonction unique avec un const_iterator comme type de paramètre fonctionnera à la place.

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_flat_map 202207L (C++23) std::flat_map et std::flat_multimap
__cpp_lib_constexpr_flat_map 202502L (C++26) constexpr std::flat_multimap

Exemple

Voir aussi

(C++23)
adapte deux conteneurs pour fournir une collection de paires clé-valeur, triées par clés uniques
(modèle de classe)
collection de paires clé-valeur, triées par clés
(modèle de classe)
collection de paires clé-valeur, hachées par clés
(modèle de classe)