std::unordered_multimap
ist ein ungeordneter assoziativer Container, der äquivalente Schlüssel unterstützt (ein unordered_multimap kann mehrere Kopien jedes Schlüsselwerts enthalten) und Werte eines anderen Typs mit den Schlüsseln verknüpft. Die unordered_multimap-Klasse unterstützt Vorwärtsiteratoren. Suche, Einfügung und Entfernung haben durchschnittlich konstante Zeitkomplexität.
Internally sind die Elemente nicht in einer bestimmten Reihenfolge sortiert, sondern in Buckets organisiert. In welchen Bucket ein Element platziert wird, hängt vollständig vom Hash seines Schlüssels ab. Dies ermöglicht schnellen Zugriff auf einzelne Elemente, da sobald der Hash berechnet ist, dieser auf den exakten Bucket verweist, in dem das Element platziert wurde.
Die Iterationsreihenfolge dieses Containers muss nicht stabil sein (daher kann beispielsweise
std::equal
nicht zum Vergleichen zweier
std::unordered_multimap
s verwendet werden), mit der Ausnahme, dass jede Gruppe von Elementen, deren Schlüssel als
äquivalent
verglichen werden (Vergleich auf Gleichheit mit
key_eq()
als Komparator), einen zusammenhängenden Teilbereich in der Iterationsreihenfolge bildet, der auch mit
equal_range()
zugänglich ist.
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.
Allerdings können
std::unordered_multimap
-Objekte im Allgemeinen nicht
constexpr
sein, da jeder dynamisch allokierte Speicher in derselben Auswertung des konstanten Ausdrucks freigegeben werden muss.
einem Iteratortyp, dessen Kategorie, Wert-, Differenz-, Zeiger- und Referenztypen dieselben sind wie iterator. Dieser Iterator kann verwendet werden, um durch einen einzelnen Bucket zu iterieren, aber nicht über Buckets hinweg.
const_local_iterator
einem Iteratortyp, dessen Kategorie, Wert-, Differenz-, Zeiger- und Referenztypen dieselben sind wie const_iterator. Dieser Iterator kann verwendet werden, um durch einen einzelnen Bucket zu iterieren, aber nicht über Buckets hinweg.
node_type(seit C++17)
eine Spezialisierung von node handle, die einen Container-Knoten repräsentiert