Freigeben über


hash_multiset (STL/CLR)

Die Vorlagenklasse beschreibt ein Objekt, das eine VARYINGLängen-Folge von Elementen steuert, die bidirektionalen Zugriff hat. Mit dem Container hash_multiset, um eine Sequenz von Elementen als Hashtabelle, jedes Tabellenelement eine bidirektionale verknüpfte Liste von Knoten Speichern, und jeden Knoten zu verwalten ein Element Speichern. Der Wert jedes Elements ist als Schlüssel, für Sortierungen der Sequenz verwendet.

In der unten stehenden Beschreibung, GValue ist das GKey identisch, das wiederum das Key identisch ist, es sei denn, das zweite ein Referenz-Typ ist, in diesem Fall Key^ dar.

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

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

Member

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 Verweises 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 eine (möglicherweise mit Vorzeichen) 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 des Elements für die generische Schnittstelle für den Container.

hash_multiset::hasher (STL/CLR)

Der Hashverfahrensdelegat für einen Schlüssel.

hash_multiset::iterator (STL/CLR)

Der Typ eines Iterators für die gesteuerte Sequenz.

hash_multiset::key_compare (STL/CLR)

Der Reihenfolgendelegat für zwei Schlüssel.

hash_multiset::key_type (STL/CLR)

Der Typ eines Sortierschlüssels.

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 negative a) Abstands zwischen zwei Elementen.

hash_multiset::value_compare (STL/CLR)

Der Reihenfolgendelegat 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)

Zählt die Anzahl Buckets.

hash_multiset::clear (STL/CLR)

Entfernt alle Elemente.

hash_multiset::count (STL/CLR)

Zählt die Elemente, die einen angegebenen Schlüssel übereinstimmen.

hash_multiset::empty (STL/CLR)

Testet, dass keine Elemente vorhanden sind.

hash_multiset::end (STL/CLR)

Legt das Ende der kontrollierten Sequenz fest.

hash_multiset::equal_range (STL/CLR)

Suchen reichen die mit einem bestimmten Schlüssel.

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 Hashverfahrensdelegaten für einen Schlüssel.

hash_multiset::hash_multiset (STL/CLR)

Erstellt ein container-Objekt.

hash_multiset::insert (STL/CLR)

Fügt Elemente hinzu.

hash_multiset::key_comp (STL/CLR)

Kopiert den Reihenfolgendelegaten für zwei Schlüssel.

hash_multiset::load_factor (STL/CLR)

Zählt die durchschnittliche Anzahl Elemente pro Bucket.

hash_multiset::lower_bound (STL/CLR)

Sucht Anfang des Bereichs, der einen angegebenen Schlüssel entspricht.

hash_multiset::make_value (STL/CLR)

Erstellt ein Wertobjekt.

hash_multiset::max_load_factor (STL/CLR)

Ruft die maximale Elemente 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 zu einem neuen Array.

hash_multiset::upper_bound (STL/CLR)

Suchenende des Bereichs, der einen angegebenen Schlüssel entspricht.

hash_multiset::value_comp (STL/CLR)

Kopiert den Reihenfolgendelegaten für zwei Elementwerte.

Operator

Beschreibung

hash_multiset::operator= (STL/CLR)

Ersetzt die gesteuerte Sequenz.

Schnittstellen

Schnittstelle

Beschreibung

ICloneable

Ein Objekt duplizieren.

IEnumerable

Sequenz durch Elemente.

ICollection

Unbegrenztes Beibehalten Elementgruppe bei.

IEnumerable

Sequenz von typisierten Elemente.

ICollection

Unbegrenztes Beibehalten Gruppe typisierten Elemente bei.

IHashKey <, Value>

Warten Sie generischen Container.

Hinweise

Das Objekt belegt und gibt die Sequenz für Speicher frei, die er als einzelne Knoten in einer bidirektionalen verknüpften Liste steuert. Um Zugriff zu beschleunigen, verwaltet das Objekt auch ein VARYINGLängen-Array Zeiger in der Liste (die Hashtabelle) bei und effektiv verwaltet die ganze Liste als Sequenz von Unterlisten oder die Buckets. Es werden Elemente in Bucket, den es Relevanz enthält, indem die Links zwischen Knoten ändert, nie ein, indem der Inhalt von einem Knoten zum anderen kopiert. Das bedeutet, dass Sie Elemente beunruhigende ohne verbleibende Elemente frei einfügen und löschen können.

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

Sie greifen auf das gespeicherte Delegatobjekt zu, indem Sie die Memberfunktion hash_set::key_comp (STL/CLR)() aufrufen. Ein solches Delegatobjekt muss entsprechende Reihenfolge zwischen Schlüsseln des Typs hash_set::key_type (STL/CLR) definieren. Das heißt, für alle zwei Schlüssel X und Y:

key_comp()(X, Y) gibt die gleichen Auswirkungen auf booleschen jeden Aufruf zurück.

Wenn key_comp()(X, Y) && key_comp()(Y, X) true ist, werden X und Y gibt an, um übereinstimmende Reihenfolge zu haben.

Jede Reihenfolgenregel, die wie operator<=(key_type, key_type), operator>=(key_type, key_type) oder operator==(key_type, key_type) verhält, definiert eqivalent Reihenfolge.

Beachten Sie, dass der Container wird sichergestellt, dass nur Elemente, deren Schlüssel entsprechende Reihenfolge verfügen (und die denselben Hashwert bilden ganzzahligen), innerhalb eines Buckets aneinandergrenzen. Im Gegensatz Vorlagenklasse hash_set (STL/CLR), benötigt ein Objekt der Vorlagenklasse hash_multiset nicht, dass Tasten für alle Elemente eindeutig sind. (zwei oder mehrere Tasten können entsprechende Reihenfolge haben.)

Das Objekt bestimmt, den Bucket eine angegebene Reihenfolgentaste enthalten soll, indem er ein Delegatobjekt gespeichertes des Typs hash_set::hasher (STL/CLR). Sie greifen auf das gespeicherte Objekt zu, indem Sie die Memberfunktion hash_set::hash_delegate (STL/CLR)() aufrufen, um einen ganzzahligen Wert zu erhalten, der vom Schlüsselwert abhängt. Sie können dem gespeicherten Delegatobjekt angeben, wenn Sie das hash_set erstellen; Wenn Sie kein Delegatobjekt angeben, ist der Standardwert die Funktion System::Object::hash_value(key_type). Das heißt, für beliebige Schlüssel X und Y:

hash_delegate()(X) gibt der ganzzahligen gleichen Auswirkungen auf jeden Aufruf zurück.

Wenn X und Y entsprechende Reihenfolge haben, sollte hash_delegate()(X) den ganzzahligen gleichen Ergebnis wie hash_delegate()(Y) zurückgeben.

Jedes Element dient als Schlüssel und Wert. Die Sequenz wird so dargestellt, die Ermittlung, Einfügen und Entfernen eines beliebigen Elements mit Operationen zulässt, das unabhängig von der Anzahl der Elemente in der Sequenz ist (konstante Zeit) - mindestens im am von Situationen. Außerdem ein Element Einfügen macht keine Iteratoren ungültig, und ein Element entfernen, Iteratoren ungültig macht nur die am entfernten Element zeigen.

Wenn gehashte Werte jedoch nicht gleichmäßig verteilt werden kann degenerieren eine Hashtabelle. Im Extrem - für eine Hashfunktion, die immer den gleichen Wert zurückgibt - Suche, Einfüge- und - Abrufvorgänge zur Anzahl der Elemente in der Sequenz proportional (linear Zeit). Der Container ermittelt, eine angemessene Hashfunktion, eine Durchschnittbucketgröße und eine Hash-Tabelle Größe (Gesamtzahl Buckets) auszuwählen, Sie können jedoch beliebige oder alle diese Optionen überschreiben. Siehe, beispielsweise, die hash_set::max_load_factor (STL/CLR) und hash_set::rehash (STL/CLR).

Ein hash_multiset unterstützt bidirektionale Iteratoren, dass Sie zu benachbarten Elementen werden kann, dass ein Iterator angegeben werden, der ein Element in der Sequenz gesteuerten festlegt. Ein spezieller Hauptknoten entspricht dem Iterator, der durch hash_multiset::end (STL/CLR)() zurückgegeben wird. Sie können diesen Iterator Dekrementieren, um das letzte Element der gesteuerten Sequenz erreicht, wenn vorhanden. Sie können einen hash_multiset Iterator erhöhen, um den Hauptknoten erreicht, und vergleicht er dann gleich end(). Sie können jedoch den Iterator nicht möglich, der von end() zurückgegeben wird.

Beachten Sie, dass Sie ein hash_multiset Element zugreifen können, das direkt die numerische Position angegeben wird - das erfordert einen Iterator mit wahlfreier Zugriff.

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

Ein Element Löschen oder entfernen, wird der Destruktor für den gespeicherten Wert auf. Die Container Löschen eines Auflistungsobjekts, löscht alle Elemente. Somit wird sichergestellt ein Container, dessen Elementtyp eine Verweisklasse, ist, dass keine Elemente den Container Beibehaltene Objekte. Beachten Sie jedoch dem Container Handles not bewirkt, zerstören seine Elemente.

Anforderungen

Header: <cliext/hash_set>

Namespace: cliext

Siehe auch

Referenz

hash_map (STL/CLR)

hash_multiset (STL/CLR)

hash_set (STL/CLR)

map (STL/CLR)

multiset (STL/CLR)

multiset (STL/CLR)

set (STL/CLR)

Weitere Ressourcen

Referenz zur STL/CLR-Bibliothek