Namensräume
Varianten
Aktionen

std::unordered_multimap

Von cppreference.com
< cpp‎ | container
 
 
 
 
Definiert in Header <unordered_map>
template<

    class Key,
    class T,
    class Hash = std::hash<Key>,
    class KeyEqual = std::equal_to<Key>,
    class Allocator = std::allocator<std::pair<const Key, T>>

> class unordered_multimap;
(1) (seit C++11)
namespace pmr {

    template<
        class Key,
        class T,
        class Hash = std::hash<Key>,
        class Pred = std::equal_to<Key>
    > using unordered_multimap =
std::unordered_multimap<Key, T, Hash, Pred,
              std::pmr::polymorphic_allocator<std::pair<const Key, T>>>;

}
(2) (seit C++17)

std::unordered_multimap ist ein ungeordneter assoziativer Container, der äquivalente Schlüssel unterstützt (eine std::unordered_multimap kann mehrere Kopien jedes Schlüsselwerts enthalten) und der Werte eines anderen Typs mit den Schlüsseln verknüpft. Die Klasse std::unordered_multimap unterstützt Vorwärtsiteratoren. Suche, Einfügung und Entfernung haben im Durchschnitt eine konstante Zeitkomplexität.

Intern sind die Elemente nicht in irgendeiner Reihenfolge sortiert, sondern in Buckets organisiert. Welchem Bucket ein Element zugeordnet wird, hängt ausschließlich vom Hash seines Schlüssels ab. Dies ermöglicht einen schnellen Zugriff auf einzelne Elemente, da der Hash, sobald er berechnet ist, auf den genauen Bucket verweist, in den das Element platziert wird.

Die Iterationsreihenfolge dieses Containers muss nicht stabil sein (daher kann z. B. std::equal nicht zum Vergleichen zweier std::unordered_multimaps verwendet werden), mit der Ausnahme, dass jede Gruppe von Elementen, deren Schlüssel als *äquivalent* verglichen werden (mit key_eq() als Komparator), einen zusammenhängenden Teilbereich in der Iterationsreihenfolge bildet, der auch mit equal_range() zugänglich ist.

std::unordered_multimap erfüllt die Anforderungen von Container, AllocatorAwareContainer, UnorderedAssociativeContainer.

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

std::unordered_multimap-Objekte können jedoch 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]
hasher Hash[edit]
key_equal KeyEqual[edit]
allocator_type Allocator[edit]
Referenz value_type&[edit]
const_reference const value_type&[edit]
Zeiger std::allocator_traits<Allocator>::pointer[edit]
const_pointer std::allocator_traits<Allocator>::const_pointer[edit]
iterator LegacyForwardIterator und ConstexprIterator(seit C++26) zu value_type[edit]
const_iterator LegacyForwardIterator und ConstexprIterator(seit C++26) zu const value_type[edit]
local_iterator Ein Iterator-Typ, dessen Kategorie, Wert, Differenz, Zeiger und
Referenztypen dieselben sind wie bei iterator. Dieser Iterator
kann verwendet werden, um durch einen einzelnen Bucket zu iterieren, aber nicht über Buckets hinweg[edit]
const_local_iterator Ein Iterator-Typ, dessen Kategorie, Wert, Differenz, Zeiger und
Referenztypen dieselben sind wie bei const_iterator. Dieser Iterator
kann verwendet werden, um durch einen einzelnen Bucket zu iterieren, aber nicht über Buckets hinweg[edit]
node_type (seit C++17) eine Spezialisierung von node handle, die einen Containerknoten repräsentiert[edit]

[edit] Member-Funktionen

konstruiert die unordered_multimap
(public member function) [edit]
destruiert die unordered_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]
gibt einen 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]
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]
Bucket-Schnittstelle
gibt einen Iterator zum Anfang des angegebenen Buckets zurück
(public member function) [edit]
gibt einen Iterator zum Ende des angegebenen Buckets zurück
(public member function) [edit]
gibt die Anzahl der Buckets zurück
(public member function) [edit]
gibt die maximale Anzahl von Buckets zurück
(public member function) [edit]
gibt die Anzahl der Elemente in einem bestimmten Bucket zurück
(public member function) [edit]
gibt den Bucket für einen bestimmten Schlüssel zurück
(public member function) [edit]
Hash-Politik
gibt die durchschnittliche Anzahl von Elementen pro Bucket zurück
(public member function) [edit]
verwaltet die maximale durchschnittliche Anzahl von Elementen pro Bucket
(public member function) [edit]
reserviert mindestens die angegebene Anzahl von Buckets und generiert die Hashtabelle neu
(public member function) [edit]
reserviert Speicher für mindestens die angegebene Anzahl von Elementen und generiert die Hashtabelle neu
(public member function) [edit]
Observer
gibt die zum Hashen der Schlüssel verwendete Funktion zurück
(public member function) [edit]
gibt die zum Vergleichen von Schlüsseln auf Gleichheit verwendete Funktion zurück
(public member function) [edit]

[edit] Nicht-Member-Funktionen

(C++11)(C++11)(entfernt in C++20)
vergleicht die Werte in der unordered_multimap
(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] Hinweise

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::unordered_multimap

[edit] Beispiel

[edit] Fehlermeldungen

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 2050 C++11 die Definitionen von reference, const_reference, pointer
und const_pointer basierten auf allocator_type
basierend auf value_type und
std::allocator_traits

[edit] Siehe auch

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