Freigeben über


hash_multimap Class

HinweisHinweis

Diese API ist veraltet.Die Alternative ist unordered_multimap Class.

Das Containerklasse hash_multimap ist eine Erweiterung der Standardvorlagenbibliothek und für den Speicher und den schnellen Abrufen von Daten aus einer Auflistung verwendet, in der jedes Element ein Paar ist, das einen Sortierschlüssel, dessen Wert nicht, muss eindeutig sein und einen Wert der Daten zugeordnet sind.

template <
   class Key, 
   class Type, 
   class Traits=hash_compare<Key, less<Key> >, 
   class Allocator=allocator<pair <const Key, Type> > 
>
class hash_multimap

Parameter

  • Schlüssel
    Der im hash_multimap gespeichert werden, Schlüsseldatentyp.

  • Text [Type]
    Der im hash_multimap gespeichert werden, Elementdatentyp.

  • Traits
    Der Typ, der zwei Funktionsobjekte umfasst, von einer Klasse Traits, die ist, zwei Elementwerte als Sortierschlüssel zu vergleichen, um deren relative Position und eine Hashfunktion zu bestimmen, die Schlüsselwerte einer des unären Prädikats Zuordnung der Elemente ganzen Zahlen zu den Typ ohne Vorzeichen size_t ist.Dieses Argument ist optional und hash_compare*<Key, less<Key> >* ist der Standardwert.

  • Allocator
    Der Typ, der die gespeicherte allocator-Objekt darstellt, die Details über die Belegung und Freigabe von Arbeitsspeicher hash_multimaps kapselt.Dieses Argument ist optional und der Standardwert ist allocator*<*pair *<*const verschlüsseln, Type> >.

Hinweise

Das hash_multimap ist:

  • Ein vereinigender Container, der ein variabler Größencontainer, der den effizienten Abrufen von Elementwerten auf Grundlage eines zugeordneten Schlüsselwert unterstützt.

  • Umkehrbar, da es einen bidirektionalen Iterator stellt, um auf die Elemente zuzugreifen.

  • Hash, da die - Elemente in Buckets auf dem Wert einer Hashfunktion gruppiert werden, die den Schlüsselwerten der Elemente angewendet wird.

  • mehrere, da die - Elemente nicht erforderlich ist, um eindeutige Schlüssel verfügen, damit ein Schlüsselwert viele Elementdatenwerte verfügen kann, die zugeordnet.

  • Ein vereinigender Container der Paaren, weil die Elementwerte von ihren Schlüsselwerten unterschiedlich sind.

  • Eine Vorlagenklasse, da die Funktionen, die bereitstellt, und ist daher unabhängig des jeweiligen Typs der Daten generisch, die als Elemente oder Schlüssel enthalten sind.Die für Elemente und Schlüssel verwendet werden Datentypen, werden stattdessen als Parameter in der Klassenvorlage zusammen mit der Vergleichsfunktion und der Belegungsfunktion angegeben.

Der Hauptvorteil des Hash- zu Sortierung ist größere Effizienz; ein erfolgreiches Hashing führt Einfügen, Löschen und Suchen in der Konstantendurchschnittszeit verglichen mit einer Zeit aus, die für den Logarithmus der Anzahl der Elemente im Container für Sortierungstechniken proportional ist.Der Wert eines Elements in einem hash_multimap, jedoch nicht der zugehörige Schlüsselwert, werden direkt geändert werden.Stattdessen müssen die Schlüsselwerte, die mit alten Elementen zugeordnet sind, gelöscht und neue Schlüsselwerte mit den neuen Elementen zugeordnet werden eingefügt wurde.

Die Auswahl des Containertyps sollte für den Typ zum Suchen und Einfügen im Allgemeinen basieren erfordert mit.Hash assoziative Container werden für die Vorgänge der Suche, Einfüge- und des Entfernens optimiert.Die Memberfunktionen, die explizit diese Vorgänge unterstützen, sind effizient, wenn sie mit einer gut entworfenen Hashfunktion verwendet werden und in einer Zeit ausführen, die im Durchschnitt Konstante und der Anzahl der Elemente im Container nicht abhängiges ist.Eine sorgfältig geplante Hashfunktion erzeugt eine einheitliche Hash Verteilung von Werten und reduziert die Anzahl von Konflikten, in denen ein Konflikt betont wird, um fungieren, wenn verschiedene Schlüsselwerte in den gleichen Hashwert zugeordnet werden.Im schlimmsten Fall mit der negativsten möglichen Hashfunktion, ist die Anzahl von Vorgängen zur Anzahl der Elemente in der Sequenz proportional (lineare Zeit).

Das hash_multimap sollte der assoziative Container der Auswahl sein, wenn die Bedingungen, die die Werte mit ihren Schlüssel zuordnen, durch die Anwendung erfüllt werden.Ein Modell für diesen Typ der Struktur ist eine sortierte Liste von Schlüsselwörtern mit den zugeordneten Zeichenfolgenwerten, die sagen wir Definitionen bereitstellen, in denen die Wörter nicht immer eindeutig definiert wurden.Wenn, stattdessen, die Schlüsselwörter eindeutig definiert wurden, um Schlüssel eindeutig sind, wird ein hash_map der Container der Auswahl sein.Wenn, dann, nur die Liste von Wörtern gespeichert wird, muss ein hash_set der richtige Container handeln.Wenn mehrere Vorkommen der Wörter ermöglicht wird, muss ein hash_multiset die entsprechende Containerstruktur sein.

Das hash_multimap sortiert die Sequenz, die es steuert, indem ein gespeichertes Traits-Hashobjekt des Typs value_compare aufruft.Auf das gespeicherte Objekt wird zugegriffen werden, indem Sie die - Memberfunktion key_comp aufruft.Ein solches Funktionsobjekt muss sich genauso verhalten wie ein Objekt der Klasse hash_compare<Key, less*<Key> >.Insbesondere für alle Werte _Key des Typs Key, führt der Aufruf Traits(_Key)* eine Verteilung von Werten des Typs size_t.

Im Allgemeinen müssen die Elemente lediglich weniger als vergleichbar, diese Reihenfolge eingerichtet sein:, damit alle zwei Elemente angegeben, es jedem bestimmt werden kann, dass sie äquivalent sind (insofern, dass kein kleiner ist als die andere ist), oder, dass von kleiner als das andere ist.Dies ergibt eine Reihenfolge zwischen den antivalenten Elementen.Auf einem mehr technischen Hinweis ist die Vergleichsfunktion ein binäres Prädikat, das eine strenge schwache Sortierung im mathematischen StandardSinn verursacht.Ein binäres Prädikat f(x,y) ist ein Funktionsobjekt, das zwei Argumentobjekt x und y und ein Rückgabewert des true oder false des verfügt.Eine Reihenfolge, die einem hash_multimap angewendet wird, ist eine strikte schwache binäre Sortierung, wenn das Prädikat irreflexiv transitiv ist, antisymmetrisch, und und wenn Äquivalenz transitiv ist, wobei zwei Objekte x und y definiert werden, um zu entsprechen wenn sowohl f(x,y) als auch f(y,x) falsch sind.Wenn die dickere Zustand der Gleichheit zwischen die Schlüssel der Äquivalenz ersetzt, wird die Reihenfolge Summe (insofern, dass alle Elemente zueinander in Beziehung stehen geordnet werden) und die Schlüssel, die verglichen werden, voneinander nicht wahrnehmbar sind.

Die tatsächliche Reihenfolge der Elemente in der Sequenz gesteuerten hängt von der Hashfunktion, von der Reihenfolgenfunktion und von der aktuellen Größe der Hashtabelle ab, die im Containerobjekt gespeichert wird.Sie können die aktuelle Größe der Hashtabelle nicht bestimmen, sodass Sie im Allgemeinen die Reihenfolge der Elemente in der Sequenz gesteuerten nicht vorhergesagt werden.Elemente Einfügen, macht keine Iteratoren ungültig, und Elemente entfernen, macht nur die Iteratoren ungültig die speziell an den entfernten Elemente gezeigt hätten.

Der Iterator, der von der hash_multimap Klasse bereitgestellt wird, ist ein bidirektionaler Iterator, aber der Klassenmember funktioniert Einfügen und hash_multimap haben Versionen, die als Vorlagenparameter einen abgeschwächten Eingabeiterator erhalten, dessen Funktionalitätsanforderungen minimaler sind als die, die durch die - Klasse von bidirektionalen Iteratoren gewährleistet werden.Die verschiedenen Iteratorkonzepte bilden eine Gruppe, die von Verfeinerungen in ihre Funktionalität verknüpft ist.Jedes Iteratorkonzept hat ein eigenes hash_multimap von Anforderungen, und Algorithmen, die ihnen Muss-Grenze ihre Annahmen zu Anforderungen arbeiten, können von diesem Typ des Iterators bereit.Es wird davon ausgegangen werden, dass ein Eingabeiterator möglicherweise wird dereferenziert, um einige - Objekt verwiesen wird, erhöht und dass er möglicherweise auf den folgenden Iterator in der Sequenz.Dies ist ein minimales hash_multimap der Funktionalität, sondern es genügt, um in der Lage zu sein, über einen Bereich von Iteratoren [_First, _Last) im Rahmen der Memberfunktionen sinnvoll zu verweisen.

In Visual C++ .NET 2003, sind Member der <hash_map> und <hash_set> Headerdateien nicht mehr im stdnamespace, sondern sind in den stdext Namespace verschoben wurde.Weitere Informationen finden Sie unter Der stdext-Namespace.

6ewecebk.collapse_all(de-de,VS.110).gifKonstruktoren

hash_multimap

Erstellt eine Liste einer bestimmten Größe oder mit Elementen eines bestimmten Werts oder mit bestimmten allocator oder als Kopie von anderen hash_multimap.

6ewecebk.collapse_all(de-de,VS.110).gifTypedefs

allocator_type

Ein Typ, der die allocator-Klasse für das hash_multimap-Objekt darstellt.

const_iterator

Ein Typ, der einen bidirektionalen Iterator stellt, der ein Element in consthash_multimap lesen kann.

const_pointer

Ein Typ, der einen Zeiger auf einen const-Element in hash_multimap bereitstellt.

const_reference

Ein Typ, der einen Verweis auf ein const-Element bereitstellt, gespeicherten in hash_multimap zum Lesen und Ausführen von const Vorgänge.

const_reverse_iterator

Ein Typ, der einen bidirektionalen Iterator stellt, der beliebige const-Element in hash_multimap lesen kann.

difference_type

Ein ganzzahliger Typ mit Vorzeichen, der verwendet werden kann, um die Anzahl von Elementen aus hash_multimap in einem Bereich zwischen Elementen darzustellen, hat sich auf den Iteratoren.

Iterator

Ein Typ, der einen bidirektionalen Iterator stellt, der lesen kann oder jedes Element in hash_multimap ändert.

key_compare

Ein Typ, der ein Funktionsobjekt bereitstellt, das zwei Sortierschlüssel vergleichen kann, um die relative Reihenfolge von zwei Elementen in hash_multimap zu bestimmen.

key_type

Ein Typ, der das Sortierschlüsselobjekt beschreibt, das jedes Element hash_multimap bildet.

mapped_type

Ein Typ, der den Datentyp darstellt, in hash_multimap gespeichert wurden.

pointer

Ein Typ, der einen Zeiger auf ein Element in hash_multimap bereitstellt.

Verweis

Ein Typ, der einen Verweis auf ein Element bereitstellt, gespeicherten in hash_multimap.

reverse_iterator

Ein Typ, der einen bidirektionalen Iterator stellt, der lesen kann oder ein Element in hash_multimap umgekehrten ändert.

size_type

Ein vorzeichenlose Typ ganzen Zahl, der die Anzahl der Elemente in hash_multimap darstellen kann.

value_type

Ein Typ, der ein Funktionsobjekt bereitstellt, das zwei Elemente als Sortierschlüssel vergleichen kann, um deren relative Position in hash_multimap zu bestimmen.

6ewecebk.collapse_all(de-de,VS.110).gifMemberfunktionen

begin

Gibt einen Iterator zurück, der das erste Element in hash_multimap behandelt.

hash_multimap::cbegin

Gibt einen konstanten Iterator zurück, der das erste Element in hash_multimap behandelt.

hash_multimap::cend

Gibt einen konstanten Iterator zurück, der den Speicherort abweicht, der dem letzten Element mit hash_multimap folgt.

clear

Löscht alle Elemente aus hash_multimap.

count

Gibt die Anzahl der Elemente in hash_multimap zurück, dessen Schlüssel eine Parameter-angegebene Schlüssel entspricht.

hash_multimap::crbegin

Gibt einen konstanten Iterator zurück, der das erste Element in umgekehrten hash_multimap behandelt.

hash_multimap::crend

Gibt einen konstanten Iterator zurück, der den Speicherort abweicht, der dem letzten Element mit umgekehrten hash_multimap folgt.

hash_multimap::emplace

Fügt ein - Element ein, das an der Stelle in hash_multimap erstellt wird.

hash_multimap::emplace_hint

Fügt ein - Element ein, das an der Stelle in hash_multimap, mit einem Platzierungs-Hinweis erstellt wird.

empty

Prüft, ob hash_multimap leer ist.

end

Gibt einen Iterator zurück, der den Speicherort abweicht, der dem letzten Element mit hash_multimap folgt.

equal_range

Gibt einen Iterator zurück, der den Speicherort abweicht, der dem letzten Element mit hash_multimap folgt.

Löschen

Entfernt ein Element oder einen Bereich von Elementen in hash_multimap von den angegebenen Speicherorten

find

Gibt einen Iterator zurück, der die Position eines Elements in hash_multimap abweicht, das eine Schlüsselentsprechung zu einem angegebenen Schlüssel verfügt.

get_allocator

Gibt eine Kopie des allocator-Objekts zurück, das verwendet wird, um hash_multimap zu erstellen.

Einfügen

Fügt ein Element oder einen Bereich von Elementen in hash_multimap in einer angegebenen Position ein.

key_comp

Ruft eine Kopie des Vergleichsobjekts ab, das den Reihenfolgentasten in hash_multimap verwendet wird.

lower_bound

Gibt einen Iterator zum ersten Element in hash_multimap zurück, das mit einem Schlüsselwert, den oder entspricht eines angegebenen Schlüssels größer als der.

max_size

Gibt die maximale Länge hash_multimap zurück.

rbegin

Gibt einen Iterator zurück, der das erste Element in umgekehrten hash_multimap behandelt.

rend

Gibt einen Iterator zurück, der den Speicherort abweicht, der dem letzten Element mit umgekehrten hash_multimap folgt.

size

Gibt eine neue Größe für hash_multimap an.

Austausch

Tauscht die Elemente aus zwei hash_multimap S. aus.

upper_bound

Gibt einen Iterator zum ersten Element in hash_multimap zurück, das mit einem Schlüsselwert, der größer als der eines angegebenen Schlüssels ist.

value_comp

Ruft eine Kopie des Vergleichsobjekts ab, das den Reihenfolgenelementwerten in hash_multimap verwendet wird.

6ewecebk.collapse_all(de-de,VS.110).gifOperatoren

hash_multimap::operator=

Ersetzt die Elemente von hash_multimap durch eine Kopie von einem anderen hash_multimap.

Anforderungen

Header: <hash_map>

Namespace: stdext

Siehe auch

Referenz

Threadsicherheit in der C++-Standardbibliothek

Standardvorlagenbibliothek

Weitere Ressourcen

<hash_map> Member

hash_multimap Member