Freigeben über


hash_multiset (STL/CLR)

Die Vorlagenklasse beschreibt ein Objekt, das eine VARYING LENGTH-Folge von Elementen steuert, die bidirektionale Zugriff hat.Sie verwenden den Container hash_multiset, um eine Sequenz von Elementen als Hashtabelle, TableItem eine bidirektionale verknüpfte Liste von Knoten, Speichern und Verwalten von einzelnen Knoten ein Element speichern.Der Wert jedes Elements wird als Schlüssel für die Einrichtung der Sequenz verwendet.

In der unten GValue interaktiven Beschreibung, ist dasselbe wie GKey, das wiederum den gleichen Wert wie Key ist, es sei denn, das zweite ein ref-Typ ist. In diesem Fall wird Key^ ist.

template<typename Key>
    ref class hash_multiset
        :   public
        System::ICloneable,
        System::Collections::IEnumerable,
        System::Collections::ICollection,
        System::Collections::Generic::IEnumerable<GValue>,
        System::Collections::Generic::ICollection<GValue>,
        System::Collections::Generic::IList<GValue>,
        Microsoft::VisualC::StlClr::IHash<Gkey, GValue>
    { ..... };

Parameter

  • Schlüssel
    Der Typ der Schlüsselkomponente eines Elements in der kontrollierten Sequenz.

Mitglieder

Typdefinition

Beschreibung

hash_multiset::const_iterator (STL/CLR)

Der Typ eines konstanten Iterators für die gesteuerte Sequenz.

hash_multiset::const_reference (STL/CLR)

Der Typ eines konstanten Verweis auf ein Element.

hash_multiset::const_reverse_iterator (STL/CLR)

Der Typ eines konstanten umgekehrten Iterators für die gesteuerte Sequenz.

hash_multiset::difference_type (STL/CLR)

Der Typ der Abstand (möglicherweise signiert) zwischen zwei Elementen.

hash_multiset::generic_container (STL/CLR)

Der Typ der generischen Schnittstelle für den Container.

hash_multiset::generic_iterator (STL/CLR)

Der Typ eines Iterators für die generische Schnittstelle für den Container.

hash_multiset::generic_reverse_iterator (STL/CLR)

Der Typ eines umgekehrten Iterators für die generische Schnittstelle für den Container.

hash_multiset::generic_value (STL/CLR)

Der Typ eines Elements für die generische Schnittstelle für den Container.

hash_multiset::hasher (STL/CLR)

Der Schlüssel für eine des Delegaten für Hashverfahrens.

hash_multiset::iterator (STL/CLR)

Der Typ eines Iterators für die gesteuerte Sequenz.

hash_multiset::key_compare (STL/CLR)

Der des Delegaten für Bestellungen für zwei Schlüssel.

hash_multiset::key_type (STL/CLR)

Der Typ einer Aufträge.

hash_multiset::reference (STL/CLR)

Der Typ eines Verweises auf ein Element.

hash_multiset::reverse_iterator (STL/CLR)

Der Typ eines umgekehrten Iterators für die gesteuerte Sequenz.

hash_multiset::size_type (STL/CLR)

Der Typ (nicht negativ) Lücke A zwischen zwei Elementen.

hash_multiset::value_compare (STL/CLR)

Der des Delegaten für Bestellungen für zwei Elementwerte.

hash_multiset::value_type (STL/CLR)

Der Typ eines Elements.

Memberfunktion

Beschreibung

hash_multiset::begin (STL/CLR)

Legt den Anfang der kontrollierten Sequenz fest.

hash_multiset::bucket_count (STL/CLR)

Ermittelt die Anzahl von Buckets.

hash_multiset::clear (STL/CLR)

Entfernt alle Elemente.

hash_multiset::count (STL/CLR)

Zählt die Elemente, die einem angegebenen Schlüssel entsprechen.

hash_multiset::empty (STL/CLR)

Überprüft, ob keine Elemente vorhanden sind.

hash_multiset::end (STL/CLR)

Legt das Ende der kontrollierten Sequenz fest.

hash_multiset::equal_range (STL/CLR)

Durchsucht einen Bereich mit dem angegebenen Schlüssel übereinstimmt.

hash_multiset::erase (STL/CLR)

Entfernt Elemente an den angegebenen Positionen.

hash_multiset::find (STL/CLR)

Sucht ein Element, der einem angegebenen Schlüssel entspricht.

hash_multiset::hash_delegate (STL/CLR)

Kopiert den Hashverfahrens Delegaten für eine Taste.

hash_multiset::hash_multiset (STL/CLR)

Erstellt ein Containerobjekt.

hash_multiset::insert (STL/CLR)

Fügt Elemente hinzu.

hash_multiset::key_comp (STL/CLR)

Kopiert den Aufträgen Delegaten für zwei Schlüssel.

hash_multiset::load_factor (STL/CLR)

Zählt die durchschnittlichen Elemente pro Bucket.

hash_multiset::lower_bound (STL/CLR)

Durchsucht den Anfang des Bereichs, der einem angegebenen Schlüssel entspricht.

hash_multiset::make_value (STL/CLR)

Erstellt ein Wertobjekt.

hash_multiset::max_load_factor (STL/CLR)

Ruft ab oder legt die maximale Anzahl von Elementen pro Bucket fest.

hash_multiset::rbegin (STL/CLR)

Legt den Anfang der umgekehrten kontrollierten Sequenz fest.

hash_multiset::rehash (STL/CLR)

Erstellt die Hashtabelle neu.

hash_multiset::rend (STL/CLR)

Legt das Ende der umgekehrten kontrollierten Sequenz fest.

hash_multiset::size (STL/CLR)

Ermittelt die Anzahl der Elemente.

hash_multiset::swap (STL/CLR)

Vertauscht den Inhalt von zwei Containern.

hash_multiset::to_array (STL/CLR)

Kopiert die gesteuerte Sequenz in ein neues Array.

hash_multiset::upper_bound (STL/CLR)

Sucht Ende des Bereichs, der einem angegebenen Schlüssel entspricht.

hash_multiset::value_comp (STL/CLR)

Kopiert den Aufträgen Delegaten für zwei Elementwerte.

Operator

Beschreibung

hash_multiset::operator= (STL/CLR)

Ersetzt die gesteuerte Sequenz.

Schnittstellen

Schnittstelle

Beschreibung

ICloneable

Duplizieren Sie ein Objekt.

IEnumerable

Sequenz von Elementen.

ICollection

Behalten Sie unter ItemGroup.

IEnumerable<T>

Sequenz von typisierten Elemente.

ICollection<T>

Behalten Sie die Gruppe typisierte Elemente beibehalten.

IHash<Schlüssel, Wert>

Warten Sie generischen Container.

Hinweise

Das Objekt wird auf und gibt Speicherplatz für die Sequenz frei, die er als einzelner Knoten in einer bidirektionalen verknüpften Liste steuert.Zum Zugriff Geschwindigkeitsvektors verwaltet das Objekt ebenfalls ein VARYING LENGTH-Array Zeiger in die Liste (die Hashtabelle) und effektiv verwaltet die gesamte Liste als eine Reihe von Buckets oder Unterlisten.Es fügt Elemente in einem Bucket, dass sie sortiert werden, indem die Links zwischen Knoten nie ändert, indem der Inhalt von einem Knoten auf einen anderen kopiert.Das bedeutet, dass Sie Elemente frei einfügen und löschen können, ohne übrigen Elemente zu beeinträchtigen.

Das Objekt ordnet jeden Bucket, den es steuert, indem Sie ein gespeichertes Delegatobjekt des Typs hash_set::key_compare (STL/CLR) aufruft.Sie können das gespeicherte Delegatobjekt angeben, wenn Sie das hash_set erstellen. Wenn Sie kein Delegatobjekt angeben, wird standardmäßig der Vergleich operator<=(key_type, key_type).

Sie greifen auf das gespeicherte Delegatobjekt an, indem Sie die Memberfunktion hash_set::key_comp (STL/CLR)() aufrufen.Solch ein Delegatobjekt muss entsprechende Reihenfolge zwischen Schlüssel vom Typ hash_set::key_type (STL/CLR) definieren.Das bedeutet, dass für alle zwei Schlüssel X und Y:

key_comp()(X, Y) gibt die gleiche boolesche Ergebnis auf jeden Aufruf zurück.

Wenn key_comp()(X, Y) && key_comp()(Y, X) true ist, werden X und Y gesagt, um entsprechende Reihenfolge aufweisen.

Alle Aufträge, die wie die Regel operator<=(key_type, key_type), operator>=(key_type, key_type) oder operator==(key_type, key_type) Verhalten definiert eqivalent Reihenfolge.

Beachten Sie, dass der Container stellt sicher, dass nur Elemente, deren Schlüssel entsprechende Reihenfolge (und die Hash auf den gleichen ganzzahligen Wert) sind angrenzend innerhalb eines Buckets haben.Im Gegensatz zu einer Vorlagenklasse hash_set (STL/CLR), erfordert ein Objekt hash_multiset der Vorlagenklasse nicht, dass der Schlüssel für alle Elemente eindeutig sind.(Zwei oder mehr Schlüssel können geeignete Reihenfolge aufweisen.)

Das Objekt bestimmt, welcher Bucket eine bestimmte Aufträge Schlüssel enthalten soll, indem er ein gespeichertes Delegatobjekt des Typs hash_set::hasher (STL/CLR) aufruft.Sie greifen auf das gespeicherte Objekt, indem Sie die Memberfunktion hash_set::hash_delegate (STL/CLR)() aufrufen, um ein Ganzzahlwert, der aus dem Schlüsselwert abhängt.Sie können das gespeicherte Delegatobjekt angeben, wenn Sie das hash_set erstellen. Wenn Sie kein Delegatobjekt angeben, wird standardmäßig die Funktion System::Object::hash_value(key_type).Das bedeutet, dass für alle Schlüssel X und Y:

hash_delegate()(X) gibt die gleiche ganzzahlige Ergebnis auf jeden Aufruf zurück.

Wenn X und Y entsprechende Reihenfolge aufweisen, sollte hash_delegate()(X) das gleiche Ergebnis wie integrale hash_delegate()(Y) zurückgeben.

Jedes Element fungiert als Schlüssel und Wert.Die Sequenz wird so dargestellt, die Suche, Einfügen und Löschen eines beliebigen Elements mit Operationen zulässt, das unabhängig von der Anzahl der Elemente in der Sequenz enthalten ist (konstante Uhrzeit) -- Besten im mindestens von Fällen.Darüber hinaus stellt keine ungültigen Einfügen eines Elements und Iteratoren Entfernen eines Elements für ungültig erklärt werden nur die Iteratoren, die am entfernten Element zeigen.

Wenn Hash Werte jedoch nicht gleichmäßig verteilt werden kann. B. in einer Hashtabelle degenerieren.Im Extrem -- für eine Hashfunktion, die stets den gleichen Wert zurückgibt -- Suchen, Einfügen und Löschen entspricht der Anzahl der Elemente in der Sequenz proportional (lineare Zeit).Der Container bemüht sich, eine angemessene Größe bucket eine Möglichkeit, eine Hashfunktion und eine Hash-Tabelle Größe (Gesamtzahl Buckets) auszuwählen. Sie können jedoch alle diese Optionen außer Kraft setzen.Siehe z. B. die Funktionen hash_set::max_load_factor (STL/CLR) und hash_set::rehash (STL/CLR).

Ein hash_multiset unterstützt bidirektionale Iteratoren. Das bedeutet, dass Sie den benachbarten angegebenen Elemente treten können ein Iterator, der eines Elements in der kontrollierten Sequenz.Ein spezieller Hauptknoten entspricht dem Iterator, der von hash_multiset::end (STL/CLR)() zurückgegeben wurde.Sie können diesen Iterator verringern, um das letzte Element in der kontrollierten Sequenz erreicht hat, falls vorhanden.Sie können einen hash_multiset Iterator erhöhen, um den Hauptknoten zu erreichen, und vergleicht dann gleich end().Aber Sie können den Iterator, der von end() keine Dereferenzierung zurückgegeben wird.

Beachten Sie, dass Sie ein angegebenes Element hash_multiset nicht direkt zugreifen können die numerische Position -- Das erfordert einen Iterator mit wahlfreier Zugriff.

Ein hash_multiset Iterator speichert ein Handle für den zugeordneten hash_multiset Knoten, der wiederum ein Handle für den zugeordneten Container speichert.Sie können Iteratoren nur mit den zugeordneten Containerobjekten verwenden.Ein hash_multiset Iterator bleibt gültig, bis der zugehörige hash_multiset Knoten mit einigen hash_multiset zugeordnet ist.Darüber hinaus ist ein gültiger Iterator dereferencable -- Sie können ihn verwenden, um den Elementwert zuzugreifen oder zu ändern, den er festgelegt wird -- solange er nicht gleich end() ist.

Entfernen oder Löschen eines Elements wird der Destruktor für den gespeicherten Wert an.Der Container zerstörend, löscht alle Elemente.Dies garantiert ein Container, dessen Elementtyp eine Verweisklasse wird, dass keine Elemente Überleben Container.Beachten Sie jedoch, dem ein Container, not Handle zerstört seine Elemente.

Anforderungen

Header: <cliext/hash_set>

Namespace: cliext

Siehe auch

Referenz

hash_map (STL/CLR)

hash_multiset (STL/CLR)

hash_set (STL/CLR)

Zuordnung (STL/CLR)

Multiset (STL/CLR)

Multiset (STL/CLR)

Satz (STL/CLR)

Weitere Ressourcen

STL/CLR-Bibliotheksreferenz