Namensräume
Varianten
Aktionen

std::multimap

Von cppreference.com
< cpp‎ | container
 
 
 
 
Definiert in 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 zulässt. Die Sortierung erfolgt gemäß der Vergleichsfunktion Compare, angewendet auf die Schlüssel. Such-, Einfüge- und Löschoperationen haben logarithmische Komplexität.

Iteratoren von std::multimap iterieren in nicht absteigender Reihenfolge der Schlüssel, wobei nicht absteigend durch den für die Konstruktion verwendeten Vergleich definiert ist. Das heißt, gegeben

  • m, ein std::multimap
  • it_l und it_r, dereferenzierbare Iteratoren zu m, mit it_l < it_r.

m.value_comp()(*it_r, *it_l) == false (von klein nach groß, wenn die Standardvergleichsfunktion verwendet wird).

Die Reihenfolge der Schlüssel-Wert-Paare mit äquivalenten Schlüsseln ist die Einfügereihenfolge und ändert sich nicht.

(seit C++11)

Überall dort, wo die Standardbibliothek die Compare-Anforderungen verwendet, wird die Äquivalenz mithilfe der auf Compare beschriebenen Äquivalenzrelation bestimmt. Ungenau ausgedrückt, gelten zwei Objekte a und b als äquivalent, wenn keines kleiner als das andere ist: !comp(a, b) && !comp(b, a).

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

Alle Member-Funktionen 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 zugewiesene Speicher im selben konstanten Ausdruck freigegeben werden muss.

(seit C++26)

Inhalt

[edit] Template-Parameter

[edit] Member-Typen

Typ Definition
key_type Key[edit]
mapped_type T[edit]
value_type std::pair<const Key, T>[edit]
size_type Vorzeichenloser Ganzzahltyp (normalerweise std::size_t)[edit]
difference_type Vorzeichenbehafteter Ganzzahltyp (normalerweise std::ptrdiff_t)[edit]
key_compare Compare[edit]
allocator_type Allocator[edit]
Referenz value_type&[edit]
const_reference const value_type&[edit]
Zeiger

Allocator::pointer

(bis C++11)

std::allocator_traits<Allocator>::pointer

(seit C++11)
[Bearbeiten]
const_pointer

Allocator::const_pointer

(bis C++11)

std::allocator_traits<Allocator>::const_pointer

(seit C++11)
[Bearbeiten]
iterator LegacyBidirectionalIterator und ConstexprIterator(seit C++26) zu value_type[edit]
const_iterator LegacyBidirectionalIterator und ConstexprIterator(seit C++26) zu const value_type[edit]
reverse_iterator std::reverse_iterator<iterator>[edit]
const_reverse_iterator std::reverse_iterator<const_iterator>[edit]
node_type (seit C++17) eine Spezialisierung von node handle, die einen Containerknoten repräsentiert[edit]

[edit] Member-Klassen

vergleicht Objekte vom Typ value_type
(class) [edit]

[edit] Member-Funktionen

konstruiert die multimap
(public member function) [edit]
destruiert die multimap
(public member function) [edit]
weist dem Container Werte zu
(public member function) [edit]
gibt den zugehörigen Allocator zurück
(public member function) [edit]
Iteratoren
gibt einen Iterator zum Anfang zurück
(public member function) [edit]
(C++11)
gibt einen Iterator zum Ende zurück
(public member function) [edit]
gibt einen Reverse-Iterator zum Anfang zurück
(public member function) [edit]
(C++11)
gibt einen Reverse-Iterator zum Ende zurück
(public member function) [edit]
Kapazität
prüft, ob der Container leer ist
(public member function) [edit]
Gibt die Anzahl der Elemente zurück
(public member function) [edit]
Gibt die maximal mögliche Anzahl von Elementen zurück
(public member function) [edit]
Modifizierer
leert den Inhalt
(public member function) [edit]
fügt Elemente ein oder Knoten(seit C++17)
(public member function) [edit]
fügt einen Bereich von Elementen ein
(public member function) [edit]
(C++11)
konstruiert Elemente direkt (in-place)
(public member function) [edit]
konstruiert Elemente "in place" unter Verwendung eines Hinweises
(public member function) [edit]
entfernt Elemente
(public member function) [edit]
tauscht die Inhalte
(public member function) [edit]
(C++17)
extrahiert Knoten aus dem Container
(public member function) [edit]
(C++17)
fügt Knoten aus einem anderen Container zusammen
(public member function) [edit]
Suche
gibt die Anzahl der Elemente zurück, die einem bestimmten Schlüssel entsprechen
(public member function) [edit]
sucht ein Element mit einem bestimmten Schlüssel
(public member function) [edit]
(C++20)
prüft, ob der Container ein Element mit einem bestimmten Schlüssel enthält
(public member function) [edit]
gibt den Bereich von Elementen zurück, die einem bestimmten Schlüssel entsprechen
(public member function) [edit]
gibt einen Iterator zum ersten Element zurück, das *nicht kleiner* als der gegebene Schlüssel ist
(public member function) [edit]
gibt einen Iterator zum ersten Element zurück, das *größer* als der gegebene Schlüssel ist
(public member function) [edit]
Observer
gibt die Funktion zurück, die Schlüssel vergleicht
(public member function) [edit]
gibt die Funktion zurück, die Schlüssel in Objekten vom Typ value_type vergleicht
(public member function) [edit]

[edit] 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 multimaps
(function template) [edit]
spezialisiert den Algorithmus std::swap
(function template) [edit]
entfernt alle Elemente, die bestimmte Kriterien erfüllen
(function template) [edit]

Deduction Guides

(seit C++17)

[edit] Anmerkungen

Feature-Test-Makro Wert Std Feature
__cpp_lib_containers_ranges 202202L (C++23) Bereichskonstruktion und -einfügung für Container
__cpp_lib_constexpr_containers 202502L (C++26) constexpr std::multimap

[edit] Beispiel

[edit] 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 230 C++98 Key musste nicht CopyConstructible sein
(ein Schlüssel vom Typ Key konnte möglicherweise nicht konstruiert werden)
Key musste außerdem
CopyConstructible sein

[edit] Siehe auch

Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln, Schlüssel sind eindeutig
(Klassenvorlage) [edit]
Sammlung von Schlüssel-Wert-Paaren, gehasht nach Schlüsseln
(Klassenvorlage) [edit]
passt zwei Container an, um eine Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln, bereitzustellen
(Klassenvorlage) [edit]