Namespaces
Variants

std:: multimap

From cppreference.net
Definiert im Header <map>
template <

class Key,
class T,
class Compare = std:: less < Key > ,
class Allocator = std:: allocator < std:: pair < const Key, T >>

> class multimap ;
(1)
namespace pmr {

template <
class Key,
class T,
class Compare = std:: less < Key >
> using multimap = std :: multimap < Key, T, Compare,
std:: pmr :: polymorphic_allocator < std:: pair < const Key, T >>> ;

}
(2) (seit C++17)

std::multimap ist ein assoziativer Container, der eine sortierte Liste von Schlüssel-Wert-Paaren enthält und mehrere Einträge mit demselben Schlüssel erlaubt. Die Sortierung erfolgt gemäß der Vergleichsfunktion Compare , angewendet auf die Schlüssel. Such-, Einfüge- und Entfernungsoperationen haben logarithmische Komplexität.

Iteratoren von std::multimap durchlaufen die Elemente in nicht-absteigender Reihenfolge der Schlüssel, wobei nicht-absteigend durch den beim Konstruieren verwendeten Vergleich definiert ist. Das heißt, gegeben

  • m , eine std::multimap
  • it_l und it_r , dereferenzierbare Iteratoren von m , mit it_l < it_r .

m. value_comp ( ) ( * it_r, * it_l ) == false (aufsteigend bei Verwendung des Standardvergleichs).

Die Reihenfolge der Schlüssel-Wert-Paare, deren Schlüssel äquivalent verglichen werden, ist die Einfügereihenfolge und ändert sich nicht.

(since C++11)

Überall dort, wo die Standardbibliothek die Compare -Anforderungen verwendet, wird Äquivalenz durch die Äquivalenzrelation bestimmt, wie unter Compare beschrieben. In ungenauer Ausdrucksweise werden zwei Objekte a und b als äquivalent betrachtet, wenn keines als kleiner als das andere verglichen wird: ! comp ( a, b ) && ! comp ( b, a ) .

std::multimap erfüllt die Anforderungen von Container , AllocatorAwareContainer , AssociativeContainer und ReversibleContainer .

Alle Memberfunktionen von std::multimap sind constexpr : Es ist möglich, std::multimap -Objekte in der Auswertung eines konstanten Ausdrucks zu erstellen und zu verwenden.

Allerdings können std::multimap -Objekte im Allgemeinen nicht constexpr sein, da jeder dynamisch allokierte Speicher in derselben Auswertung des konstanten Ausdrucks freigegeben werden muss.

(seit C++26)

Inhaltsverzeichnis

Template-Parameter

Mitgliedertypen

Typ Definition
key_type Key
mapped_type T
value_type std:: pair < const Key, T >
size_type Vorzeichenloser Ganzzahltyp (üblicherweise std::size_t )
difference_type Vorzeichenbehafteter Ganzzahltyp (üblicherweise std::ptrdiff_t )
key_compare Compare
allocator_type Allocator
reference value_type &
const_reference const value_type &
pointer

Allocator::pointer

(bis C++11)

std:: allocator_traits < Allocator > :: pointer

(seit C++11)
const_pointer

Allocator::const_pointer

(bis C++11)

std:: allocator_traits < Allocator > :: const_pointer

(seit C++11)
iterator 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

Mitgliedsklassen

vergleicht Objekte vom Typ value_type
(Klasse)

Memberfunktionen

Konstruiert den multimap
(öffentliche Elementfunktion)
zerstört die multimap
(öffentliche Elementfunktion)
weist dem Container Werte zu
(öffentliche Elementfunktion)
gibt den zugeordneten Allokator zurück
(öffentliche Elementfunktion)
Iteratoren
gibt einen Iterator zum Anfang zurück
(öffentliche Elementfunktion)
(C++11)
gibt einen Iterator zum Ende zurück
(öffentliche Member-Funktion)
gibt einen Reverse-Iterator zum Anfang zurück
(public member function)
(C++11)
gibt einen umgekehrten Iterator zum Ende zurück
(öffentliche Elementfunktion)
Kapazität
prüft, ob der Container leer ist
(öffentliche Elementfunktion)
gibt die Anzahl der Elemente zurück
(öffentliche Elementfunktion)
gibt die maximal mögliche Anzahl von Elementen zurück
(öffentliche Elementfunktion)
Modifikatoren
löscht den Inhalt
(öffentliche Elementfunktion)
fügt Elemente ein oder Knoten (seit C++17)
(öffentliche Elementfunktion)
fügt eine Reihe von Elementen ein
(öffentliche Elementfunktion)
(C++11)
Konstruiert Element direkt vor Ort
(öffentliche Elementfunktion)
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)
fügt Knoten aus einem anderen Container ein
(ö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
(public member function)
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
(public member function)
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 die Werte von zwei multimap s lexikographisch
(Funktions-Template)
spezialisiert den std::swap Algorithmus
(Funktions-Template)
löscht alle Elemente, die bestimmte Kriterien erfüllen
(Funktions-Template)

Deduktionsleitfäden

(seit C++17)

Hinweise

Feature-Test Makro Wert Std Funktion
__cpp_lib_containers_ranges 202202L (C++23) Ranges-Konstruktion und -Einfügung für Container
__cpp_lib_constexpr_map 202502L (C++26) constexpr std::multimap

Beispiel

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 230 C++98 Key war nicht erforderlich, CopyConstructible zu sein
(ein Schlüssel vom Typ Key könnte möglicherweise nicht konstruiert werden)
Key ist ebenfalls erforderlich,
um CopyConstructible zu sein

Siehe auch

Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln, Schlüssel sind eindeutig
(Klassen-Template)
Sammlung von Schlüssel-Wert-Paaren, gehasht nach Schlüsseln
(Klassen-Template)
passt zwei Container an, um eine Sammlung von Schlüssel-Wert-Paaren zu bieten, sortiert nach Schlüsseln
(Klassen-Template)