unordered_multimap-Klasse
Die Vorlagenklasse beschreibt ein Objekt, das eine Elementsequenz variabler Länge vom Typ std::pair<const Key, Ty> steuert. Die Sequenz wird grob durch eine Hashfunktion sortiert, die die Sequenz in eine geordnete Gruppe von Untersequenzen, so genannte Buckets, unterteilt. Innerhalb jedes Buckets bestimmt eine Vergleichsfunktion, ob ein Elementpaar eine entsprechende Reihenfolge hat. Jedes Element speichert zwei Objekte, einen Sortierschlüssel und einen Wert. Die Sequenz wird so dargestellt, dass die Suche, das Einfügen und das Entfernen eines beliebigen Elements mit einer Reihen von Vorgängen möglich ist, die unabhängig von der Anzahl von Elementen in der Sequenz (konstante Zeit) sein können, zumindest, wenn alle Buckets von ungefähr gleicher Länge sind. Im schlimmsten Fall, d. h., wenn sich alle Elemente in einem Bucket befinden, ist die Anzahl von Vorgängen proportional zur Anzahl von Elementen in der Sequenz (lineare Zeit). Darüber hinaus führt das Einfügen eines Elements nicht dazu, dass Iteratoren ungültig werden, und durch das Entfernen eines Elements werden nur solche Iteratoren ungültig, die auf das entfernte Element gezeigt haben.
template<class Key,
class Ty,
class Hash = std::hash<Key>,
class Pred = std::equal_to<Key>,
class Alloc = std::allocator<Key> >
class unordered_multimap;
Parameter
Parameter |
Beschreibung |
Key |
Der Schlüsseltyp. |
Ty |
Der zugeordnete Typ. |
Hash |
Der Hashfunktionsobjekttyp. |
Pred |
Der Gleichheitsvergleich-Funktionsobjekttyp. |
Alloc |
Die Zuweisungsklasse. |
Member
Typdefinition |
Beschreibung |
Der Typ einer Zuweisung für die Speicherverwaltung. |
|
Der Typ eines konstanten Iterators für die gesteuerte Sequenz. |
|
Der Typ eines konstanten Bucketiterators für die gesteuerte Sequenz. |
|
Der Typ eines konstanten Zeigers auf ein Element. |
|
Der Typ eines konstanten Verweises auf ein Element. |
|
Der Typ eines Abstands mit Vorzeichen zwischen zwei Elementen. |
|
Der Typ der Hashfunktion. |
|
Der Typ eines Iterators für die gesteuerte Sequenz. |
|
Der Typ der Vergleichsfunktion. |
|
Der Typ eines Sortierschlüssels. |
|
Der Typ eines Bucketiterators für die gesteuerte Sequenz. |
|
Der Typ eines zugeordneten Werts, der jedem Schlüssel zugeordnet ist. |
|
Der Typ eines Zeigers auf ein Element. |
|
Der Typ eines Verweises auf ein Element. |
|
Der Typ eines Abstands ohne Vorzeichen zwischen zwei Elementen. |
|
Der Typ eines Elements. |
Memberfunktion |
Beschreibung |
Legt den Anfang der kontrollierten Sequenz fest. |
|
Ruft die Bucketnummer für einen Schlüsselwert ab. |
|
Ruft die Anzahl von Buckets ab. |
|
Ruft die Größe eines Buckets ab. |
|
Legt den Anfang der kontrollierten Sequenz fest. |
|
Legt das Ende der kontrollierten Sequenz fest. |
|
Entfernt alle Elemente. |
|
Sucht die Anzahl von Elementen, die einem angegebenen Schlüssel entsprechen. |
|
Fügt ein Element hinzu, das direkt erstellt wird. |
|
Fügt ein Element hinzu, das direkt mit Hinweis erstellt wird. |
|
Testet, ob keine Elemente vorhanden sind. |
|
Legt das Ende der kontrollierten Sequenz fest. |
|
Sucht den Bereich, der einem angegebenen Schlüssel entspricht. |
|
Entfernt Elemente an den angegebenen Positionen. |
|
Sucht ein Element, das einem angegebenen Schlüssel entspricht. |
|
Ruft das gespeicherte Zuweisungsobjekt ab. |
|
Ruft das gespeicherte Hashfunktionsobjekt ab. |
|
Fügt Elemente hinzu. |
|
Ruft das gespeicherte Vergleichsfunktionsobjekt ab. |
|
Zählt die durchschnittliche Anzahl von Elementen pro Bucket. |
|
Ruft die maximale Anzahl von Buckets ab. |
|
Ruft die maximale Anzahl von Elementen pro Bucket ab oder legt sie fest. |
|
Ruft die maximale Größe der gesteuerten Sequenz ab. |
|
Erstellt die Hashtabelle neu. |
|
Ermittelt die Anzahl von Elementen. |
|
Vertauscht den Inhalt von zwei Containern. |
|
Erstellt ein container-Objekt. |
Operator |
Beschreibung |
Kopiert eine Hashtabelle. |
Hinweise
Das Objekt sortiert die Sequenz, die es steuert, indem es zwei gespeicherte Objekte aufruft, ein Vergleichsfunktionsobjekt des Typs unordered_multimap::key_equal und ein Hashfunktionsobjekt des Typs unordered_multimap::hasher. Sie greifen auf das zuerst gespeicherte Objekt zu, indem Sie die Memberfunktion unordered_multimap::key_eq aufrufen(). Auf das zweite gespeicherte Objekt greifen Sie zu, indem Sie die Memberfunktion unordered_multimap::hash_function() aufrufen. Insbesondere für alle Werte X und Y vom Typ Key gibt der Aufruf von key_eq()(X, Y) nur "true" zurück, wenn die beiden Argumentwerte die entsprechende Reihenfolge aufweisen. Der Aufruf von hash_function()(keyval) ergibt eine Verteilung von Werten des Typs size_t. Im Gegensatz zur Vorlagenklasse unordered_map-Klasse stellt ein Objekt der Vorlagenklasse unordered_multimap nicht sicher, dass key_eq()(X, Y) für zwei Elemente der gesteuerten Sequenz immer "false" ist. (Die Schlüssel müssen nicht eindeutig sein.)
Das Objekt speichert auch einen Höchstlastfaktor, der die maximal erwünschte durchschnittliche Anzahl von Elementen pro Bucket angibt. Wenn durch Einfügen eines Elements der Wert unordered_multimap::load_factor() den Höchstlastfaktor überschreitet, erhöht der Container die Anzahl von Buckets und erstellt die Hashtabelle nach Bedarf neu.
Die tatsächliche Reihenfolge der Elemente in der gesteuerten Sequenz hängt von der Hashfunktion, von der Vergleichsfunktion, von der Einfügereihenfolge, vom Höchstlastfaktor und von der aktuellen Anzahl von Buckets ab. Sie können die Reihenfolge der Elemente in der gesteuerten Sequenz im Allgemeinen nicht vorhersagen. Sie können allerdings sicher sein, dass jede Teilmenge von Elementen, die die entsprechende Reihenfolge aufweisen, in der gesteuerten Sequenz benachbart sind.
Das Objekt belegt Speicher und gibt Speicher für die gesteuerte Sequenz durch ein gespeichertes Zuweisungsobjekt des Typs unordered_multimap::allocator_type frei. Ein solches Zuweisungsobjekt muss die gleiche externe Schnittstelle wie ein Objekt der Vorlagenklasse allocator aufweisen. Beachten Sie, dass das gespeicherte Zuweisungsobjekt nicht kopiert wird, wenn das Containerobjekt zugewiesen wird.
Anforderungen
Header: <unordered_map>
Namespace: std
Siehe auch
Referenz
Threadsicherheit in der C++-Standardbibliothek