Freigeben über


hash_multiset Class

HinweisHinweis

Diese API ist veraltet.Die Alternative ist unordered_multiset Class.

Das Containerklasse hash_multiset ist eine Erweiterung der Standardvorlagenbibliothek und für den Speicher und den schnellen Abrufen von Daten aus einer Auflistung verwendet, in der die Werte der enthaltenden Elemente als die Schlüsselwerte dienen und wird nicht benötigt, um eindeutig.

template <
   class Key, 
   class Traits=hash_compare<Key, less<Key> >, 
   class Allocator=allocator<Key> 
>
class hash_multiset

Parameter

  • Schlüssel
    Der im hash_multiset gespeichert werden, Elementdatentyp.

  • Traits
    Der Typ, der zwei Funktionsobjekte umfasst, von einer Klasse vergleichen, die ein binäres Prädikat ist, das kann, 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 das 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_multisets kapselt.Dieses Argument ist optional und der Standardwert ist allocator*<Key>.*

Hinweise

Das hash_multiset ist:

  • Ein vereinigender Container, der ein variabler Größencontainer, der den effizienten Abrufen von Elementwerten auf Grundlage eines zugeordneten Schlüsselwert unterstützt.Darüber hinaus ist es ein einfacher vereinigender Container, weil die Elementwerte die Schlüsselwerte sind.

  • 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.Da hash_multiset auch ein einfacher vereinigender Container ist, sind ihre Elemente auch eindeutig.

  • 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 Satz nicht wird direkt geändert werden.Stattdessen müssen Sie alte Werte und Einsatzelemente mit neuen Werten löschen.

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_multiset sollte der assoziative Container der Auswahl sein, wenn die Bedingungen, die die Werte mit ihren Schlüssel zuordnen, durch die Anwendung erfüllt sind.Die Elemente eines hash_multiset sind möglicherweise mehr und Aufschlag als eigene Sortierschlüssel, so Schlüssel sind nicht eindeutig.Ein Modell für diesen Typ der Struktur ist eine sortierte Liste beispielsweise von Wörtern, in denen die Wörter möglicherweise mehrmals auftreten.Waren mehrere Vorkommen der Wörter nicht zulässig ist, dann ist ein hash_set die entsprechende Containerstruktur worden sein.Wenn eindeutige Definitionen als Werte zur Liste der eindeutigen Schlüsselwörtern angefügt wird, muss ein hash_map eine entsprechende Struktur sein, um diese Daten enthalten.Wenn stattdessen die Definitionen nicht eindeutig sind, wird ein hash_multimap der Container der Auswahl sein.

Das hash_multiset sortiert die Sequenz, die es steuert, indem ein gespeichertes Hashmerkmalsobjekt 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 dann alle Werte Schlüssel des Typs Key, führt der Aufruf Trait(Schlüssel) 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_multiset 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_multiset Klasse bereitgestellt wird, ist ein bidirektionaler Iterator, aber der Klassenmember funktioniert Einfügen und hash_multiset 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_multiset 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_multiset der Funktionalität, sondern 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.

wh3627k8.collapse_all(de-de,VS.110).gifKonstruktoren

hash_multiset

Erstellt hash_multiset, das leer ist oder, das eine Kopie von vollständig oder teilweise von anderen hash_multiset ist.

wh3627k8.collapse_all(de-de,VS.110).gifTypedefs

allocator_type

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

const_iterator

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

const_pointer

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

const_reference

Ein Typ, der einen Verweis auf ein const-Element bereitstellt, gespeicherten in hash_multiset 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_multiset lesen kann.

difference_type

Ein ganzzahliger Typ mit Vorzeichen, der die Differenz zwischen zwei Iteratoren bereitstellt, die Elemente innerhalb derselben hash_multiset behandeln.

Iterator

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

key_compare

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

key_type

Ein Typ, der ein Objekt beschrieben wird, das als Element von hash_set in seiner Kapazität als Sortierschlüssel gespeichert wird.

pointer

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

Verweis

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

reverse_iterator

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

size_type

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

value_compare

Ein Typ, der zwei Funktionsobjekte bereitstellt, ein binäres Prädikat der Klasse vergleichen, das zwei Elementwerte von hash_multiset vergleichen kann, um deren relative Position und ein unäres Prädikat zu bestimmen, das die Elemente auf.

value_type

Ein Typ, der ein Objekt beschrieben wird, das als Element von hash_multiset in seiner Kapazität als Wert gespeichert wird.

wh3627k8.collapse_all(de-de,VS.110).gifMemberfunktionen

begin

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

hash_multiset::cbegin

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

hash_multiset::cend

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

clear

Löscht alle Elemente aus hash_multiset.

count

Gibt die Anzahl der Elemente in hash_multiset zurück, dessen Schlüssel eine Parameter-angegebene Schlüssel übereinstimmt

hash_multiset::crbegin

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

hash_multiset::crend

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

hash_multiset::emplace

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

hash_multiset::emplace_hint

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

empty

Prüft, ob hash_multiset leer ist.

end

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

equal_range

Gibt ein Paar Iteratoren bzw. dem ersten Element in hash_multiset mit einem Schlüssel, die größer ist, als ein angegebener Schlüssel und dem ersten Element in hash_multiset mit einem Schlüssel zurück, die gleich oder größer ist als Schlüssel.

Löschen

Entfernt ein Element oder einen Bereich von Elementen in hash_multiset von den angegebenen Speicherorten oder Elemente entfernt, die einen angegebenen Schlüssel übereinstimmen.

find

Gibt einen Iterator zurück, der die Position eines Elements in hash_multiset 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_multiset zu erstellen.

Einfügen

Fügt ein Element oder einen Bereich von Elementen in hash_multiset ein.

key_comp

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

lower_bound

Gibt einen Iterator zum ersten Element in hash_multiset mit einem Schlüssel zurück, die gleich oder größer ist als ein angegebener Schlüssel.

max_size

Gibt die maximale Länge hash_multiset zurück.

rbegin

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

rend

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

size

Gibt die Anzahl der Elemente in hash_multiset zurück.

Austausch

Tauscht die Elemente aus zwei hash_multiset S. aus.

upper_bound

Gibt einen Iterator zum ersten Element in hash_multiset zurück, das mit einem Schlüssel, die gleich oder größer ist als ein angegebener Schlüssel.

value_comp

Ruft eine Kopie des Hashmerkmalsobjekts ab, das verwendet wird, um Elementschlüsselwerte in hash_multiset zu hashen und zu sortieren.

wh3627k8.collapse_all(de-de,VS.110).gifOperatoren

hash_multiset::operator=

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

Anforderungen

Header: <hash_set>

Namespace: stdext

Siehe auch

Referenz

Threadsicherheit in der C++-Standardbibliothek

Standardvorlagenbibliothek

Weitere Ressourcen

<hash_set> Member

hash_multiset Member