std::multiset
ist ein assoziativer Container, der eine sortierte Menge von Objekten des Typs Key enthält. Im Gegensatz zu set sind mehrere Schlüssel mit äquivalenten Werten erlaubt. Die Sortierung erfolgt mithilfe der Schlüsselvergleichsfunktion Compare. Such-, Einfüge- und Entfernungsoperationen haben logarithmische Komplexität.
Überall dort, wo die Standardbibliothek die
Compare
-Anforderungen verwendet, wird Äquivalenz durch die Äquivalenzrelation bestimmt, wie unter
Compare
beschrieben. In ungenauen Worten werden zwei Objekte
a
und
b
als äquivalent betrachtet, wenn keines als kleiner als das andere verglichen wird:
!
comp
(
a, b
)
&&
!
comp
(
b, a
)
.
Die Reihenfolge der Elemente, die äquivalent vergleichen, ist die Einfügereihenfolge und ändert sich nicht.
Alle Memberfunktionen von
std::multiset
sind
constexpr
: Es ist möglich,
std::multiset
-Objekte in der Auswertung eines konstanten Ausdrucks zu erstellen und zu verwenden.
Allerdings können
std::multiset
-Objekte im Allgemeinen nicht
constexpr
sein, da jeder dynamisch allokierte Speicher in derselben Auswertung des konstanten Ausdrucks freigegeben werden muss.
Die Member-Typen
iterator
und
const_iterator
können Aliase für denselben Typ sein. Dies bedeutet, dass das Definieren eines Paares von Funktionsüberladungen, die die beiden Typen als Parametertypen verwenden, die
One Definition Rule
verletzen kann. Da
iterator
in
const_iterator
konvertierbar ist, wird stattdessen eine einzelne Funktion mit einem
const_iterator
als Parametertyp funktionieren.