Namespaces
Variants

std:: flat_multiset

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

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

> class flat_multiset ;
(depuis C++23)

Le conteneur multiset plat est un adaptateur de conteneur qui fournit les fonctionnalités d'un conteneur associatif stockant un ensemble trié d'objets de type Key . Contrairement à std::flat_set , plusieurs clés avec des valeurs équivalentes sont autorisées. Le tri est effectué en utilisant la fonction de comparaison de clés Compare .

Le modèle de classe flat_multiset agit comme un wrapper pour le conteneur trié sous-jacent passé en tant qu'objet de type KeyContainer .

Partout où la bibliothèque standard utilise les Compare exigences, 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_multiset 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 multiset plat prend en charge la plupart AssociativeContainer des opérations qui utilisent des clés égales.

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

Cependant, std::flat_multiset ne peut 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.

(since C++26)

Table des matières

Invalidation des itérateurs

Paramètres du modèle

Key - Le type des éléments stockés. Le programme est mal formé si Key n'est pas du même type que KeyContainer::value_type .
Compare - Un type Compare fournissant un ordre strict faible.
KeyContainer - Le type du conteneur sous-jacent SequenceContainer pour stocker les éléments. Les itérateurs de ce conteneur doivent satisfaire LegacyRandomAccessIterator ou modéliser random_access_iterator .

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

Types membres

Type Définition
container_type Key Container
key_type Key
value_type Key
key_compare Compare
value_compare Compare
reference value_type &
const_reference const value_type &
size_type typename KeyContainer :: size_type
difference_type typename KeyContainer :: difference_type
iterator défini par l'implémentation LegacyRandomAccessIterator , ConstexprIterator (depuis C++26) et random_access_iterator vers value_type
const_iterator défini par l'implémentation LegacyRandomAccessIterator , 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 >

Objets membres

Membre Description
container_type c (privé) le conteneur adapté
( objet membre d'exposition uniquement* )
key_compare compare (privé) l'objet fonction de comparaison
( objet membre d'exposition uniquement* )

Fonctions membres

construit le flat_multiset
(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 le conteneur sous-jacent
(fonction membre publique)
remplace le conteneur sous-jacent
(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)
renvoie 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)

Fonctions non membres

compare lexicographiquement les valeurs de deux flat_multiset 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)
(étiquette)

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 fonctions utilisant ces deux types comme types de paramètres peut violer la Règle de Définition Unique . Puisque iterator est convertible en const_iterator , une fonction unique avec un paramètre de type const_iterator fonctionnera à la place.

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_flat_set 202207L (C++23) std::flat_set et std::flat_multiset
__cpp_lib_constexpr_flat_set 202502L (C++26) constexpr std::flat_multiset

Exemple

Voir aussi

(C++23)
adapte un conteneur pour fournir une collection de clés uniques, triées par clés
(modèle de classe)
collection de clés, triées par clés
(modèle de classe)
collection de clés, hachées par clés
(modèle de classe)