hash_map Class
Hinweis |
---|
Diese API ist veraltet.Die Alternative ist unordered_map Class. |
Speichert und ruft Daten schnell aus einer Auflistung ab, in der jedes Element ein Paar ist, das einen Sortierschlüssel, dessen Wert eindeutig ist 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_map
Parameter
Schlüssel
Der im hash_map gespeichert werden, Schlüsseldatentyp.Text [Type]
Der im hash_map gespeichert werden, Elementdatentyp.Traits
Der Typ, der zwei Funktionsobjekte umfasst, von einer Klasse vergleichen Lage, 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<verschlüsseln, less<verschlüsseln> > ist der Standardwert.Allocator
Der Typ, der die gespeicherte allocator-Objekt darstellt, die Details über die Belegung und Freigabe von Arbeitsspeicher hash_maps kapselt.Dieses Argument ist optional und der Standardwert ist allocator<pair <const Schlüssel, Typ**> >**.
Hinweise
Das hash_map 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.
Eindeutig insofern, dass jedes der Elemente einen eindeutigen Schlüssel verfügen muss.
Ein vereinigender Container der Paaren, da seine Elementdatenwerte 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_map, 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_map 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 eindeutig auftretenden Schlüsselwörtern mit den zugeordneten Zeichenfolgenwerten, die sagen wir Definitionen bereitstellen.Wenn, stattdessen Wörter, die mehr als eine genaue Definition haben, damit Schlüssel nicht eindeutig sind, wird ein hash_multimap 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_map sortiert die Sequenz, die es steuert, indem ein gespeichertes Traits-Hashobjekt der Klasse value_compare aufruft.Auf das gespeicherte Objekt wird zugegriffen werden, indem Sie die - Memberfunktion key_comp aufruft.Ein solches Funktionsobjekt muss die gleichen wie ein Objekt der Klasse hash_compare<Key, less<Key> verhalten >.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 von true oder von false verfügt.Eine Reihenfolge, die einem hash_map 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_map Klasse bereitgestellt wird, ist ein bidirektionaler Iterator, aber der Klassenmember funktioniert Einfügen und hash_map 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 verfügt über einen eigenen Satz 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 minimaler Satz von Funktionen, aber es genügt, um in der Lage zu sein, über einen Bereich von Iteratoren [_First, _Last) im Rahmen der Klassenmemberfunktionen 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.
Konstruktoren
Erstellt hash_map, das leer ist oder, das eine Kopie von vollständig oder teilweise von anderen hash_map ist. |
Typedefs
Ein Typ, der die allocator-Klasse für das hash_map-Objekt darstellt. |
|
Ein Typ, der einen bidirektionalen Iterator stellt, der ein Element in consthash_map lesen kann. |
|
Ein Typ, der einen Zeiger auf einen const-Element in hash_map bereitstellt. |
|
Ein Typ, der einen Verweis auf ein const-Element bereitstellt, gespeicherten in hash_map zum Lesen und Ausführen von const Vorgänge. |
|
Ein Typ, der einen bidirektionalen Iterator stellt, der beliebige const-Element in hash_map lesen kann. |
|
Ein ganzzahliger Typ mit Vorzeichen, der verwendet werden kann, um die Anzahl von Elementen aus hash_map in einem Bereich zwischen Elementen darzustellen, hat sich auf den Iteratoren. |
|
Ein Typ, der einen bidirektionalen Iterator stellt, der lesen kann oder jedes Element in hash_map ändert. |
|
Ein Typ, der ein Funktionsobjekt bereitstellt, das zwei Sortierschlüssel vergleichen kann, um die relative Reihenfolge von zwei Elementen in hash_map zu bestimmen. |
|
Ein Typ beschreibt das Sortierschlüsselobjekt, das jedes Element hash_map bildet. |
|
Ein Typ, der den Datentyp darstellt, in hash_map gespeichert wurden. |
|
Ein Typ, der einen Zeiger auf ein Element in hash_map bereitstellt. |
|
Ein Typ, der einen Verweis auf ein Element bereitstellt, gespeicherten in hash_map. |
|
Ein Typ, der einen bidirektionalen Iterator stellt, der lesen kann oder ein Element in hash_map umgekehrten ändert. |
|
Ein vorzeichenlose Typ ganzen Zahl, der die Anzahl der Elemente in hash_map darstellen kann. |
|
Ein Typ, der ein Funktionsobjekt bereitstellt, das zwei Elemente als Sortierschlüssel vergleichen kann, um deren relative Position in hash_map zu bestimmen. |
Memberfunktionen
Sucht ein Element in hash_map mit einem angegebenen Schlüsselwert. |
|
Gibt einen Iterator zurück, der das erste Element in hash_map behandelt. |
|
Gibt einen konstanten Iterator zurück, der das erste Element in hash_map behandelt. |
|
Gibt einen konstanten Iterator zurück, der den Speicherort abweicht, der dem letzten Element mit hash_map folgt. |
|
Löscht alle Elemente aus hash_map. |
|
Gibt die Anzahl der Elemente in hash_map zurück, dessen Schlüssel eine Parameter-angegebene Schlüssel entspricht. |
|
Gibt einen konstanten Iterator zurück, der das erste Element in umgekehrten hash_map behandelt. |
|
Gibt einen konstanten Iterator zurück, der den Speicherort abweicht, der dem letzten Element mit umgekehrten hash_map folgt. |
|
Fügt ein - Element ein, das an der Stelle in hash_map erstellt wird. |
|
Fügt ein - Element ein, das an der Stelle in hash_map, mit einem Platzierungs-Hinweis erstellt wird. |
|
Prüft, ob hash_map leer ist. |
|
Gibt einen Iterator zurück, der den Speicherort abweicht, der dem letzten Element mit hash_map folgt. |
|
Gibt ein Paar Iteratoren, bzw., dem ersten Element in hash_map mit einem Schlüssel, die größer ist, als ein angegebener Schlüssel und dem ersten Element in hash_map mit einem Schlüssel zurück, die gleich oder größer ist als Schlüssel. |
|
Entfernt ein Element oder einen Bereich von Elementen in hash_map von den angegebenen Speicherorten |
|
Gibt einen Iterator zurück, der die Position eines Elements in hash_map abweicht, das eine Schlüsselentsprechung zu einem angegebenen Schlüssel verfügt. |
|
Gibt eine Kopie des allocator-Objekts zurück, das verwendet wird, um hash_map zu erstellen. |
|
Fügt ein Element oder einen Bereich von Elementen in hash_map ein. |
|
Gibt einen Iterator zum ersten Element in hash_map mit einem Schlüsselwert zurück, den oder entspricht eines angegebenen Schlüssels größer als der. |
|
Gibt einen Iterator zum ersten Element in hash_map mit einem Schlüsselwert zurück, den oder entspricht eines angegebenen Schlüssels größer als der. |
|
Gibt die maximale Länge hash_map zurück. |
|
Gibt einen Iterator zurück, der das erste Element in umgekehrten hash_map behandelt. |
|
Gibt einen Iterator zurück, der den Speicherort abweicht, der dem letzten Element mit umgekehrten hash_map folgt. |
|
Gibt die Anzahl der Elemente in hash_map zurück. |
|
Tauscht die Elemente aus zwei hash_map S. aus. |
|
Gibt einen Iterator zum ersten Element in hash_map zurück, das mit einem Schlüsselwert, der größer als der eines angegebenen Schlüssels ist. |
|
Ruft eine Kopie des Vergleichsobjekts ab, das den Reihenfolgenelementwerten in hash_map verwendet wird. |
Operatoren
Fügt ein Element in hash_map mit einem angegebenen Schlüsselwert ein. |
|
Ersetzt die Elemente von hash_map durch eine Kopie von einem anderen hash_map. |
Anforderungen
Header: <hash_map>
Namespace: stdext
Siehe auch
Referenz
Threadsicherheit in der C++-Standardbibliothek