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.
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
std::multiset
ne peuvent généralement pas être
constexpr
, car toute allocation de mémoire dynamique doit être libérée lors de la même évaluation d'expression constante.
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.