std:: multiset
|
Definiert im Header
<set>
|
||
|
template
<
class
Key,
|
(1) | |
|
namespace
pmr
{
template
<
|
(2) | (seit C++17) |
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. |
(since C++11) |
std::multiset
erfüllt die Anforderungen von
Container
,
AllocatorAwareContainer
,
AssociativeContainer
und
ReversibleContainer
.
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
|
(since C++26) |
Inhaltsverzeichnis |
Template-Parameter
|
Dieser Abschnitt ist unvollständig
Grund: Beschreibungen der Template-Parameter hinzufügen. |
Mitgliedertypen
| Typ | Definition | ||||
key_type
|
Key
|
||||
value_type
|
Key
|
||||
size_type
|
Vorzeichenloser Ganzzahltyp (üblicherweise std::size_t ) | ||||
difference_type
|
Vorzeichenbehafteter Ganzzahltyp (üblicherweise std::ptrdiff_t ) | ||||
key_compare
|
Compare
|
||||
value_compare
|
Compare
|
||||
allocator_type
|
Allocator
|
||||
reference
|
value_type & | ||||
const_reference
|
const value_type & | ||||
pointer
|
|
||||
const_pointer
|
|
||||
iterator
|
Konstanter
LegacyBidirectionalIterator
und
ConstexprIterator
(seit C++26)
zu
value_type
|
||||
const_iterator
|
LegacyBidirectionalIterator und ConstexprIterator (seit C++26) zu const value_type | ||||
reverse_iterator
|
std:: reverse_iterator < iterator > | ||||
const_reverse_iterator
|
std:: reverse_iterator < const_iterator > | ||||
node_type
(seit C++17)
|
eine Spezialisierung von node handle , die einen Container-Knoten darstellt |
Memberfunktionen
konstruiert den
multiset
(öffentliche Elementfunktion) |
|
zerstört den
multiset
(öffentliche Elementfunktion) |
|
|
weist dem Container Werte zu
(öffentliche Elementfunktion) |
|
|
gibt den zugeordneten Allokator zurück
(öffentliche Elementfunktion) |
|
Iteratoren |
|
|
(C++11)
|
gibt einen Iterator zum Anfang zurück
(öffentliche Elementfunktion) |
|
(C++11)
|
gibt einen Iterator zum Ende zurück
(öffentliche Elementfunktion) |
|
(C++11)
|
gibt einen Reverse-Iterator zum Anfang zurück
(öffentliche Member-Funktion) |
|
(C++11)
|
gibt einen Reverse-Iterator zum Ende zurück
(öffentliche Member-Funktion) |
Kapazität |
|
|
prüft, ob der Container leer ist
(öffentliche Elementfunktion) |
|
|
gibt die Anzahl der Elemente zurück
(public member function) |
|
|
gibt die maximal mögliche Anzahl von Elementen zurück
(public member function) |
|
Modifikatoren |
|
|
löscht den Inhalt
(öffentliche Elementfunktion) |
|
|
fügt Elemente ein
oder Nodes
(seit C++17)
(öffentliche Member-Funktion) |
|
|
(C++23)
|
fügt eine Reihe von Elementen ein
(öffentliche Elementfunktion) |
|
(C++11)
|
Konstruiert Element direkt vor Ort
(öffentliche Elementfunktion) |
|
(C++11)
|
Konstruiert Elemente direkt unter Verwendung eines Hinweises
(öffentliche Elementfunktion) |
|
löscht Elemente
(öffentliche Elementfunktion) |
|
|
tauscht die Inhalte aus
(öffentliche Elementfunktion) |
|
|
(C++17)
|
extrahiert Knoten aus dem Container
(öffentliche Elementfunktion) |
|
(C++17)
|
verbindet Knoten aus einem anderen Container
(öffentliche Elementfunktion) |
Lookup |
|
|
gibt die Anzahl der Elemente zurück, die einem bestimmten Schlüssel entsprechen
(öffentliche Elementfunktion) |
|
|
findet Element mit spezifischem Schlüssel
(öffentliche Elementfunktion) |
|
|
(C++20)
|
prüft, ob der Container ein Element mit spezifischem Schlüssel enthält
(öffentliche Elementfunktion) |
|
gibt den Bereich der Elemente zurück, die einem bestimmten Schlüssel entsprechen
(öffentliche Elementfunktion) |
|
|
gibt einen Iterator zum ersten Element zurück,
das nicht kleiner
als der gegebene Schlüssel ist
(öffentliche Elementfunktion) |
|
|
gibt einen Iterator zum ersten Element zurück,
größer
als der angegebene Schlüssel
(öffentliche Elementfunktion) |
|
Beobachter |
|
|
gibt die Funktion zurück, die Schlüssel vergleicht
(öffentliche Elementfunktion) |
|
gibt die Funktion zurück, die Schlüssel in Objekten des Typs
value_type
vergleicht
(öffentliche Elementfunktion) |
|
Nicht-Member-Funktionen
|
(entfernt in C++20)
(entfernt in C++20)
(entfernt in C++20)
(entfernt in C++20)
(entfernt in C++20)
(C++20)
|
vergleicht lexikographisch die Werte zweier
multiset
s
(Funktions-Template) |
|
spezialisiert den
std::swap
Algorithmus
(Funktions-Template) |
|
|
(C++20)
|
löscht alle Elemente, die bestimmte Kriterien erfüllen
(Funktions-Template) |
Deduktionsleitfäden |
(seit C++17) |
Hinweise
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.
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-Konstruktion und -Einfügung für Container |
__cpp_lib_constexpr_set
|
202502L
|
(C++26) |
constexpr
std::multiset
|
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 103 | C++98 | Iterator erlaubt Modifikation von Schlüsseln | Iterator als konstant festgelegt |
| LWG 230 | C++98 |
Key
war nicht erforderlich
CopyConstructible
zu sein
(ein Schlüssel vom Typ
Key
könnte nicht konstruierbar sein)
|
Key
wird ebenfalls benötigt
um CopyConstructible zu sein |
Siehe auch
|
Sammlung eindeutiger Schlüssel, sortiert nach Schlüsseln
(Klassen-Template) |
|
|
(C++11)
|
Sammlung von Schlüsseln, gehasht nach Schlüsseln
(Klassen-Template) |
|
(C++23)
|
passt einen Container an, um eine Sammlung von Schlüsseln zu bieten, sortiert nach Schlüsseln
(Klassen-Template) |