std:: multiset
|
Défini dans l'en-tête
<set>
|
||
|
template
<
class
Key,
|
(1) | |
|
namespace
pmr
{
template
<
|
(2) | (depuis C++17) |
std::multiset
est un conteneur associatif qui contient un ensemble trié d'objets de type Key. Contrairement à 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. Les opérations de recherche, d'insertion et de suppression ont une complexité logarithmique.
Partout où la bibliothèque standard utilise les exigences Compare , l'équivalence est déterminée en utilisant la relation d'équivalence comme décrit sur Compare . En termes approximatifs, 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 ) .
|
L'ordre des éléments qui sont équivalents par comparaison est l'ordre d'insertion et ne change pas. |
(since C++11) |
std::multiset
satisfait aux exigences de
Container
,
AllocatorAwareContainer
,
AssociativeContainer
et
ReversibleContainer
.
Toutes les fonctions membres de
std::multiset
sont
constexpr
: il est possible de créer et d'utiliser des objets
std::multiset
lors de l'évaluation d'une expression constante.
Cependant, les objets
|
(depuis C++26) |
Table des matières |
Paramètres du modèle
|
Cette section est incomplète
Motif : Ajouter les descriptions des paramètres du modèle. |
Types membres
| Type | Définition | ||||
key_type
|
Key
|
||||
value_type
|
Key
|
||||
size_type
|
Type entier non signé (généralement std::size_t ) | ||||
difference_type
|
Type entier signé (généralement std::ptrdiff_t ) | ||||
key_compare
|
Compare
|
||||
value_compare
|
Compare
|
||||
allocator_type
|
Allocator
|
||||
reference
|
value_type & | ||||
const_reference
|
const value_type & | ||||
pointer
|
|
||||
const_pointer
|
|
||||
iterator
|
Itérateur constant
LegacyBidirectionalIterator
et
ConstexprIterator
(depuis C++26)
vers
value_type
|
||||
const_iterator
|
LegacyBidirectionalIterator et ConstexprIterator (depuis C++26) vers const value_type | ||||
reverse_iterator
|
std:: reverse_iterator < iterator > | ||||
const_reverse_iterator
|
std:: reverse_iterator < const_iterator > | ||||
node_type
(depuis C++17)
|
une spécialisation de node handle représentant un nœud de conteneur |
Fonctions membres
construit le
multiset
(fonction membre publique) |
|
détruit le
multiset
(fonction membre publique) |
|
|
assigne des valeurs au conteneur
(fonction membre publique) |
|
|
retourne l'allocateur associé
(fonction membre publique) |
|
Itérateurs |
|
|
(C++11)
|
retourne un itérateur vers le début
(fonction membre publique) |
|
(C++11)
|
retourne un itérateur vers la fin
(fonction membre publique) |
|
(C++11)
|
retourne un itérateur inverse vers le début
(fonction membre publique) |
|
(C++11)
|
retourne un itérateur inverse vers la fin
(fonction membre publique) |
Capacité |
|
|
vérifie si le 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 |
|
|
efface le contenu
(fonction membre publique) |
|
|
insère des éléments
ou des nœuds
(depuis C++17)
(fonction membre publique) |
|
|
(C++23)
|
insère une plage d'éléments
(fonction membre publique) |
|
(C++11)
|
construit un élément en place
(fonction membre publique) |
|
(C++11)
|
construit des éléments en place en utilisant un indice
(fonction membre publique) |
|
efface les éléments
(fonction membre publique) |
|
|
échange le contenu
(fonction membre publique) |
|
|
(C++17)
|
extrait les nœuds du conteneur
(fonction membre publique) |
|
(C++17)
|
épisse les nœuds d'un autre conteneur
(fonction membre publique) |
Recherche |
|
|
retourne le nombre d'éléments correspondant à une clé spécifique
(fonction membre publique) |
|
|
trouve l'élément avec une clé spécifique
(fonction membre publique) |
|
|
(C++20)
|
vérifie si le conteneur contient un élément avec une clé spécifique
(fonction membre publique) |
|
renvoie la plage d'éléments correspondant à 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) |
|
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
|
(supprimé en C++20)
(supprimé en C++20)
(supprimé en C++20)
(supprimé en C++20)
(supprimé en C++20)
(C++20)
|
compare lexicographiquement les valeurs de deux
multiset
s
(modèle de fonction) |
|
spécialise l'algorithme
std::swap
(modèle de fonction) |
|
|
(C++20)
|
efface tous les éléments satisfaisant des critères spécifiques
(modèle de fonction) |
Guides de déduction |
(depuis C++17) |
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
. Puisque
iterator
est convertible en
const_iterator
, une seule fonction avec un paramètre de type
const_iterator
fonctionnera à la place.
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construction et insertion de plages pour les conteneurs |
__cpp_lib_constexpr_set
|
202502L
|
(C++26) |
constexpr
std::multiset
|
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 103 | C++98 | l'itérateur permet la modification des clés | itérateur rendu constant |
| LWG 230 | C++98 |
Key
n'était pas requis d'être
CopyConstructible
(une clé de type
Key
pourrait ne pas pouvoir être construite)
|
Key
est également requis
d'être CopyConstructible |
Voir aussi
|
collection de clés uniques, triées par clés
(modèle de classe) |
|
|
(C++11)
|
collection de clés, hachée par clés
(modèle de classe) |
|
(C++23)
|
adapte un conteneur pour fournir une collection de clés, triées par clés
(modèle de classe) |