std:: flat_multiset
|
Défini dans l'en-tête
<flat_set>
|
||
|
template
<
class
Key,
|
(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,
|
(since C++26) |
Table des matières |
Invalidation des itérateurs
| Cette section est incomplète |
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
|
(C++23)
|
compare lexicographiquement les valeurs de deux
flat_multiset
s
(modèle de fonction) |
|
(C++23)
|
spécialise l'algorithme
std::swap
(modèle de fonction) |
|
(C++23)
|
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
|
Cette section est incomplète
Raison : aucun 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) |
|
|
(C++11)
|
collection de clés, hachées par clés
(modèle de classe) |