hash_set (STL/CLR)

Die Vorlagenklasse beschreibt ein Objekt, das eine unterschiedliche Sequenz von Elementen steuert, die bidirektionalen Zugriff haben. Sie verwenden den Container hash_set , um eine Abfolge von Elementen als Hashtabelle zu verwalten, jeder Tabelleneintrag, der eine bidirektionale verknüpfte Liste von Knoten speichert, und jeder Knoten, der ein Element speichert. Der Wert jedes Elements wird als Schlüssel verwendet, um die Sequenz zu sortieren.

In der nachstehenden Beschreibung ist die gleiche GKeywie , die wiederum mit "Key" identisch ist, GValue es sei denn, dies ist ein Bezugstyp, in diesem Fall ist Key^es .

Syntax

template<typename Key>
    ref class hash_set
        :   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.

Anforderungen

Header:< cliext/hash_set>

Namespace: cliext

Deklarationen

Typendefinition Beschreibung
hash_set::const_iterator (STL/CLR) Der Typ eines konstanten Iterators für die gesteuerte Sequenz.
hash_set::const_reference (STL/CLR) Der Typ eines konstanten Verweises auf ein Element.
hash_set::const_reverse_iterator (STL/CLR) Der Typ eines konstanten umgekehrten Iterators für die gesteuerte Sequenz.
hash_set::difference_type (STL/CLR) Der Typ eines (möglicherweise signierten) Abstands zwischen zwei Elementen.
hash_set::generic_container (STL/CLR) Der Typ der generischen Schnittstelle für den Container.
hash_set::generic_iterator (STL/CLR) Der Typ eines Iterators für die generische Schnittstelle für den Container.
hash_set::generic_reverse_iterator (STL/CLR) Der Typ eines Reverse-Iterators für die generische Schnittstelle für den Container.
hash_set::generic_value (STL/CLR) Der Typ eines Elements für die generische Schnittstelle für den Container.
hash_set::hasher (STL/CLR) Der Hashingstellvertretung für einen Schlüssel.
hash_set::iterator (STL/CLR) Der Typ eines Iterators für die gesteuerte Sequenz.
hash_set::key_compare (STL/CLR) Der Sortierstellvertretung für zwei Schlüssel.
hash_set::key_type (STL/CLR) Der Typ eines Sortierschlüssels.
hash_set::reference (STL/CLR) Der Typ eines Verweises auf ein Element.
hash_set::reverse_iterator (STL/CLR) Der Typ eines umgekehrten Iterators für die gesteuerte Sequenz.
hash_set::size_type (STL/CLR) Der Typ eines (nicht negativen) Abstands zwischen zwei Elementen.
hash_set::value_compare (STL/CLR) Der Sortierstellvertretung für zwei Elementwerte.
hash_set::value_type (STL/CLR) Der Typ eines Elements.
Memberfunktion BESCHREIBUNG
hash_set::begin (STL/CLR) Legt den Anfang der kontrollierten Sequenz fest.
hash_set::bucket_count (STL/CLR) Zählt die Anzahl der Buckets.
hash_set::clear (STL/CLR) Entfernt alle Elemente.
hash_set::count (STL/CLR) Zählt Elemente, die einem angegebenen Schlüssel entsprechen.
hash_set::empty (STL/CLR) Testet, ob keine Elemente vorhanden sind.
hash_set::end (STL/CLR) Legt das Ende der kontrollierten Sequenz fest.
hash_set::equal_range (STL/CLR) Sucht den Bereich, der einem angegebenen Schlüssel entspricht.
hash_set::erase (STL/CLR) Entfernt Elemente an den angegebenen Positionen.
hash_set::find (STL/CLR) Sucht ein Element, das einem angegebenen Schlüssel entspricht.
hash_set::hash_delegate (STL/CLR) Kopiert den Hashingstellvertretung für einen Schlüssel.
hash_set::hash_set (STL/CLR) Erstellt ein container-Objekt.
hash_set::insert (STL/CLR) Fügt Elemente hinzu.
hash_set::key_comp (STL/CLR) Kopiert den Sortierstellvertretung für zwei Schlüssel.
hash_set::load_factor (STL/CLR) Zählt die durchschnittliche Anzahl von Elementen pro Bucket.
hash_set::lower_bound (STL/CLR) Sucht den Anfang des Bereichs, der einem angegebenen Schlüssel entspricht.
hash_set::make_value (STL/CLR) Erstellt ein Wertobjekt.
hash_set::max_load_factor (STL/CLR) Ruft die maximale Anzahl von Elementen pro Bucket ab oder legt sie fest.
hash_set::rbegin (STL/CLR) Legt den Anfang der umgekehrten kontrollierten Sequenz fest.
hash_set::rehash (STL/CLR) Erstellt die Hashtabelle neu.
hash_set::rend (STL/CLR) Legt das Ende der umgekehrten kontrollierten Sequenz fest.
hash_set::size (STL/CLR) Ermittelt die Anzahl von Elementen.
hash_set::swap (STL/CLR) Vertauscht den Inhalt von zwei Containern.
hash_set::to_array (STL/CLR) Kopiert die kontrollierte Sequenz in ein neues Array.
hash_set::upper_bound (STL/CLR) Findet das Ende des Bereichs, der einem angegebenen Schlüssel entspricht.
hash_set::value_comp (STL/CLR) Kopiert den Sortierstellvertretung für zwei Elementwerte.
Operator BESCHREIBUNG
hash_set::operator= (STL/CLR) Ersetzt die kontrollierte Sequenz.

Schnittstellen

Schnittstelle BESCHREIBUNG
ICloneable Duplizieren eines Objekts.
IEnumerable Sequenzieren sie durch Elemente.
ICollection Verwalten der Gruppe von Elementen.
IEnumerable<T> Sequenzieren sie durch typierte Elemente.
ICollection<T> Verwalten der Gruppe der typierten Elemente.
IHashKey<, Wert> Verwalten sie generische Container.

Hinweise

Das Objekt weist den Speicher für die Sequenz zu, die er als einzelne Knoten in einer bidirektionalen verknüpften Liste steuert. Um den Zugriff zu beschleunigen, verwaltet das Objekt auch ein unterschiedlich langes Array von Zeigern in der Liste (die Hashtabelle), verwaltet die gesamte Liste effektiv als Abfolge von Unterlisten oder Buckets. Es fügt Elemente in einen Bucket ein, der sortiert wird, indem er die Verknüpfungen zwischen Knoten ändert, niemals durch Kopieren des Inhalts eines Knotens in einen anderen. Das bedeutet, dass Sie Elemente frei einfügen und entfernen können, ohne verbleibende Elemente zu stören.

Das Objekt sortiert jeden Bucket, den er steuert, indem ein gespeichertes Delegatenobjekt vom Typ hash_set::key_compare (STL/CLR) aufgerufen wird. Sie können das gespeicherte Delegatenobjekt angeben, wenn Sie das hash_set erstellen; Wenn Sie kein Delegatenobjekt angeben, ist der Standardwert der Vergleich operator<=(key_type, key_type).

Sie greifen auf das gespeicherte Delegatenobjekt zu, indem Sie die Memberfunktion hash_set::key_comp (STL/CLR)() aufrufen. Ein solches Delegatenobjekt muss die entsprechende Sortierung zwischen Den Schlüsseln des Typs hash_set::key_type (STL/CLR) definieren. Dies bedeutet, dass für alle zwei Tasten X und Y:

key_comp()(X, Y) gibt dasselbe boolesche Ergebnis für jeden Aufruf zurück.

Wenn key_comp()(X, Y) && key_comp()(Y, X) dies der Fall ist, X dann und Y sie sollen eine entsprechende Sortierung haben.

Jede Sortierregel, die sich wie operator<=(key_type, key_type)folgt verhält, operator>=(key_type, key_type) oder operator==(key_type, key_type) definiert eqivalente Sortierung.

Beachten Sie, dass der Container nur dafür sorgt, dass Elemente, deren Schlüssel eine entsprechende Sortierung aufweisen (und welche Hash auf denselben ganzzahligen Wert) innerhalb eines Buckets liegen. Im Gegensatz zur Vorlagenklasse hash_multiset (STL/CLR) stellt ein Objekt der Vorlagenklasse hash_set sicher, dass Schlüssel für alle Elemente eindeutig sind. (Es gibt keine zwei Schlüssel, die die entsprechende Reihenfolge aufweisen.)

Das Objekt bestimmt, welcher Bucket einen bestimmten Sortierschlüssel enthalten soll, indem ein gespeichertes Delegatenobjekt vom Typ hash_set::hasher (STL/CLR) aufgerufen wird. Sie greifen auf dieses gespeicherte Objekt zu, indem Sie die Memberfunktion hash_set::hash_delegate (STL/CLR)() aufrufen, um einen ganzzahligen Wert abzurufen, der vom Schlüsselwert abhängt. Sie können das gespeicherte Delegatenobjekt angeben, wenn Sie das hash_set erstellen; Wenn Sie kein Delegatenobjekt angeben, ist die Standardfunktion die Funktion System::Object::hash_value(key_type). Das bedeutet, für alle Tasten X und Y:

hash_delegate()(X) gibt dasselbe ganze Ergebnis für jeden Aufruf zurück.

Wenn X eine entsprechende Sortierung vorhanden ist Y , hash_delegate()(X) sollte dasselbe ganze Ergebnis zurückgegeben werden wie hash_delegate()(Y).

Jedes Element dient sowohl als Schlüssel als auch als Wert. Die Sequenz wird auf eine Weise dargestellt, die das Nachschlagen, Einfügen und Entfernen eines beliebigen Elements mit einer Reihe von Vorgängen ermöglicht, die unabhängig von der Anzahl der Elemente in der Sequenz (Konstantenzeit) sind – zumindest in den besten Fällen. Darüber hinaus führt das Einfügen eines Elements nicht dazu, dass Iteratoren ungültig werden, und durch das Entfernen eines Elements werden nur solche Iteratoren ungültig, die auf das entfernte Element gezeigt haben.

Wenn Hashwerte nicht einheitlich verteilt werden, kann jedoch eine Hashtabelle degeneriert werden. Im Extrem -- für eine Hashfunktion, die immer denselben Wert zurückgibt - sind Nachschlage-, Einfüge- und Entfernungsfunktionen proportional zur Anzahl der Elemente in der Sequenz (lineare Zeit). Der Container bemüht sich, eine angemessene Hashfunktion, mittlere Bucketgröße und Hashtabellengröße (Gesamtanzahl der Buckets) auszuwählen, aber Sie können eine oder 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_set unterstützt bidirektionale Iteratoren, was bedeutet, dass Sie zu benachbarten Elementen wechseln können, die einen Iterator erhalten, der ein Element in der kontrollierten Sequenz bestimmt. Ein spezieller Kopfknoten entspricht dem iterator, der von hash_set::end (STL/CLR)() zurückgegeben wird. Sie können diesen Iterator dekrementieren, um das letzte Element in der kontrollierten Sequenz zu erreichen, sofern vorhanden. Sie können einen hash_set Iterator erhöhen, um den Kopfknoten zu erreichen, und es wird dann gleich end()verglichen. Sie können jedoch nicht ableiten, von dem der Iterator zurückgegeben wird end().

Beachten Sie, dass Sie nicht direkt auf ein hash_set-Element verweisen können, das seine numerische Position erhält – dies erfordert einen Zufallszugriffs-Iterator.

Ein hash_set Iterator speichert einen Handle an seinem zugeordneten hash_set Knoten, der wiederum einen Handle an seinen zugeordneten Container speichert. Sie können Iteratoren nur mit ihren zugeordneten Containerobjekten verwenden. Ein hash_set Iterator bleibt gültig, solange der zugeordnete hash_set Knoten einigen hash_set zugeordnet ist. Darüber hinaus ist ein gültiger Iterator ableitend - Sie können es verwenden, um auf den von ihr angegebenen Elementwert zuzugreifen oder zu ändern - solange er nicht gleich end()ist.

Das Löschen oder Entfernen eines Elements ruft den Destruktor für seinen gespeicherten Wert auf. Durch das Zerstören des Containers werden alle Elemente gelöscht. Ein Container, dessen Elementtyp eine Bezugsklasse ist, stellt daher sicher, dass keine Elemente den Container überleben. Beachten Sie jedoch, dass ein Container von Ziehpunkten seine Elemente nicht zerstört.

Member

hash_set::begin (STL/CLR)

Legt den Anfang der kontrollierten Sequenz fest.

Syntax

iterator begin();

Hinweise

Die Memberfunktion gibt einen bidirektionalen Iterator zurück, der das erste Element der kontrollierten Sequenz oder direkt über das Ende einer leeren Sequenz bestimmt. Sie können damit einen Iterator abrufen, der den current Anfang der kontrollierten Sequenz bestimmt; der Zustand kann sich jedoch ändern, sobald sich die Länge der kontrollierten Sequenz ändert.

Beispiel

// cliext_hash_set_begin.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect first two items
    Myhash_set::iterator it = c1.begin();
    System::Console::WriteLine("*begin() = {0}", *it);
    System::Console::WriteLine("*++begin() = {0}", *++it);
    return (0);
    }

hash_set::bucket_count (STL/CLR)

Zählt die Anzahl der Buckets.

Syntax

int bucket_count();

Hinweise

Die Memberfunktionen gibt die aktuelle Anzahl von Buckets zurück. Sie verwenden es, um die Größe der Hashtabelle zu bestimmen.

Beispiel

// cliext_hash_set_bucket_count.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect current parameters
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    System::Console::WriteLine();

    // change max_load_factor and redisplay
    c1.max_load_factor(0.25f);
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    System::Console::WriteLine();

    // rehash and redisplay
    c1.rehash(100);
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    return (0);
    }
a b c
bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 4

bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 0.25

bucket_count() = 128
load_factor() = 0.0234375
max_load_factor() = 0.25

hash_set::clear (STL/CLR)

Entfernt alle Elemente.

Syntax

void clear();

Hinweise

Die Memberfunktion ruft effektiv hash_set::Erase (STL/CLR)(hash_set::begin (STL/CLR)(),hash_set::end (STL/CLR)()) auf. Sie verwenden es, um sicherzustellen, dass die kontrollierte Sequenz leer ist.

Beispiel

// cliext_hash_set_clear.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // clear the container and reinspect
    c1.clear();
    System::Console::WriteLine("size() = {0}", c1.size());

    // add elements and clear again
    c1.insert(L'a');
    c1.insert(L'b');

    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    c1.clear();
    System::Console::WriteLine("size() = {0}", c1.size());
    return (0);
    }
a b c
size() = 0
a b
size() = 0

hash_set::const_iterator (STL/CLR)

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

Syntax

typedef T2 const_iterator;

Hinweise

Der Typ beschreibt ein Objekt nicht angegebener Typs T2 , das als konstanten bidirektionalen Iterator für die kontrollierte Sequenz dienen kann.

Beispiel

// cliext_hash_set_const_iterator.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display contents " a b c"
    Myhash_set::const_iterator cit = c1.begin();
    for (; cit != c1.end(); ++cit)
        System::Console::Write("{0} ", *cit);
    System::Console::WriteLine();
    return (0);
    }
a b c

hash_set::const_reference (STL/CLR)

Der Typ eines konstanten Verweises auf ein Element.

Syntax

typedef value_type% const_reference;

Hinweise

Der Typ beschreibt einen Konstantenverweis auf ein Element.

Beispiel

// cliext_hash_set_const_reference.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    Myhash_set::const_iterator cit = c1.begin();
    for (; cit != c1.end(); ++cit)
        {   // get a const reference to an element
        Myhash_set::const_reference cref = *cit;
        System::Console::Write("{0} ", cref);
        }
    System::Console::WriteLine();
    return (0);
    }
a b c

hash_set::const_reverse_iterator (STL/CLR)

Der Typ einer Konstantenumdrehungs-Iterator für die kontrollierte Sequenz..

Syntax

typedef T4 const_reverse_iterator;

Hinweise

Der Typ beschreibt ein Objekt nicht angegebener Typs T4 , das als konstanter Umgekehrter Iterator für die kontrollierte Sequenz dienen kann.

Beispiel

// cliext_hash_set_const_reverse_iterator.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display contents " a b c" reversed
    Myhash_set::const_reverse_iterator crit = c1.rbegin();
    for (; crit != c1.rend(); ++crit)
        System::Console::Write("{0} ", *crit);
    System::Console::WriteLine();
    return (0);
    }
c b a

hash_set::count (STL/CLR)

Sucht die Anzahl von Elementen, die einem angegebenen Schlüssel entsprechen.

Syntax

size_type count(key_type key);

Parameter

key
Der zu suchende Schlüsselwert.

Hinweise

Die Memberfunktion gibt die Anzahl der Elemente in der kontrollierten Sequenz zurück, die die entsprechende Reihenfolge mit schlüsseln. Damit können Sie die Anzahl der Elemente in der kontrollierten Sequenz ermitteln, die derzeit einem angegebenen Schlüssel entsprechen.

Beispiel

// cliext_hash_set_count.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    System::Console::WriteLine("count(L'A') = {0}", c1.count(L'A'));
    System::Console::WriteLine("count(L'b') = {0}", c1.count(L'b'));
    System::Console::WriteLine("count(L'C') = {0}", c1.count(L'C'));
    return (0);
    }
a b c
count(L'A') = 0
count(L'b') = 1
count(L'C') = 0

hash_set::difference_type (STL/CLR)

Die Typen eines signierten Abstands zwischen zwei Elementen.

Syntax

typedef int difference_type;

Hinweise

Der Typ beschreibt eine möglicherweise negative Elementanzahl.

Beispiel

// cliext_hash_set_difference_type.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // compute positive difference
    Myhash_set::difference_type diff = 0;
    for (Myhash_set::iterator it = c1.begin(); it != c1.end(); ++it)
        ++diff;
    System::Console::WriteLine("end()-begin() = {0}", diff);

    // compute negative difference
    diff = 0;
    for (Myhash_set::iterator it = c1.end(); it != c1.begin(); --it)
        --diff;
    System::Console::WriteLine("begin()-end() = {0}", diff);
    return (0);
    }
a b c
end()-begin() = 3
begin()-end() = -3

hash_set::empty (STL/CLR)

Testet, ob keine Elemente vorhanden sind.

Syntax

bool empty();

Hinweise

Die Memberfunktion gibt „true“ für eine leere gesteuerte Sequenz zurück. Es entspricht hash_set:::size (STL/CLR)() == 0. Sie verwenden es, um zu testen, ob die hash_set leer ist.

Beispiel

// cliext_hash_set_empty.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine("size() = {0}", c1.size());
    System::Console::WriteLine("empty() = {0}", c1.empty());

    // clear the container and reinspect
    c1.clear();
    System::Console::WriteLine("size() = {0}", c1.size());
    System::Console::WriteLine("empty() = {0}", c1.empty());
    return (0);
    }
a b c
size() = 3
empty() = False
size() = 0
empty() = True

hash_set::end (STL/CLR)

Legt das Ende der kontrollierten Sequenz fest.

Syntax

iterator end();

Hinweise

Die Memberfunktion gibt einen bidirektionalen Iterator zurück, der direkt über das Ende der kontrollierten Sequenz verweist. Sie verwenden es, um einen Iterator zu erhalten, der das Ende der kontrollierten Sequenz bestimmt; der Status ändert sich nicht, wenn sich die Länge der kontrollierten Sequenz ändert.

Beispiel

// cliext_hash_set_end.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect last two items
    Myhash_set::iterator it = c1.end();
    --it;
    System::Console::WriteLine("*-- --end() = {0}", *--it);
    System::Console::WriteLine("*--end() = {0}", *++it);
    return (0);
    }
a b c
*-- --end() = b
*--end() = c

hash_set::equal_range (STL/CLR)

Sucht den Bereich, der einem angegebenen Schlüssel entspricht.

Syntax

cliext::pair<iterator, iterator> equal_range(key_type key);

Parameter

key
Der zu suchende Schlüsselwert.

Hinweise

Die Memberfunktion gibt ein Paar von Iteratoren cliext::pair<iterator, iterator>(hash_set::lower_bound (STL/CLR)hash_set::upper_bound (STL/CLR)(key),(key)) zurück. Sie verwenden es, um den Bereich von Elementen zu bestimmen, die derzeit in der kontrollierten Sequenz mit einem angegebenen Schlüssel übereinstimmen.

Beispiel

// cliext_hash_set_equal_range.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
typedef Myhash_set::pair_iter_iter Pairii;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // display results of failed search
    Pairii pair1 = c1.equal_range(L'x');
    System::Console::WriteLine("equal_range(L'x') empty = {0}",
        pair1.first == pair1.second);

    // display results of successful search
    pair1 = c1.equal_range(L'b');
    for (; pair1.first != pair1.second; ++pair1.first)
        System::Console::Write("{0} ", *pair1.first);
    System::Console::WriteLine();
    return (0);
    }
a b c
equal_range(L'x') empty = True
b

hash_set::erase (STL/CLR)

Entfernt Elemente an den angegebenen Positionen.

Syntax

iterator erase(iterator where);
iterator erase(iterator first, iterator last);
bool erase(key_type key)

Parameter

first
Anfang des Zu löschenden Bereichs.

key
Schlüsselwert zum Löschen.

last
Ende des Bereichs zum Löschen.

where
Element, das gelöscht werden soll.

Hinweise

Die erste Memberfunktion entfernt das Element der kontrollierten Sequenz, die auf den Ort verweist, und gibt einen Iterator zurück, der das erste Element angibt, das über das element entfernt oder hash_set:::End (STL/CLR)() verfügt, wenn kein solches Element vorhanden ist. Sie verwenden es, um ein einzelnes Element zu entfernen.

Die zweite Memberfunktion entfernt die Elemente der kontrollierten Sequenz im Bereich [first, last), und gibt einen Iterator zurück, der das erste Element angibt, das über alle Elemente hinaus entfernt bleibt, oder end() wenn kein solches Element vorhanden ist.. Sie verwenden es, um null oder mehr zusammenhängende Elemente zu entfernen.

Die dritte Memberfunktion entfernt alle Elemente der kontrollierten Sequenz, deren Schlüssel die entsprechende Reihenfolge aufweist, und gibt eine Anzahl der entfernten Elemente zurück. Sie verwenden es, um alle Elemente zu entfernen und zu zählen, die einem angegebenen Schlüssel entsprechen.

Jede Elementlöschung dauert Zeit proportional zum Logarithmus der Anzahl der Elemente in der kontrollierten Sequenz.

Beispiel

// cliext_hash_set_erase.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // erase an element and reinspect
    System::Console::WriteLine("erase(begin()) = {0}",
        *c1.erase(c1.begin()));

    // add elements and display " b c d e"
    c1.insert(L'd');
    c1.insert(L'e');
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // erase all but end
    Myhash_set::iterator it = c1.end();
    System::Console::WriteLine("erase(begin(), end()-1) = {0}",
        *c1.erase(c1.begin(), --it));
    System::Console::WriteLine("size() = {0}", c1.size());
    return (0);
    }
a b c
erase(begin()) = b
b c d e
erase(begin(), end()-1) = e
size() = 1

hash_set::find (STL/CLR)

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

Syntax

iterator find(key_type key);

Parameter

key
Der zu suchende Schlüsselwert.

Hinweise

Wenn mindestens ein Element in der kontrollierten Sequenz eine gleichwertige Reihenfolge mit Schlüssel aufweist, gibt die Memberfunktion einen Iterator zurück, der eine dieser Elemente bestimmt; andernfalls wird hash_set::End (STL/CLR)() zurückgegeben. Sie verwenden es, um ein Element zu suchen, das derzeit in der kontrollierten Sequenz mit einem angegebenen Schlüssel übereinstimmt.

Beispiel

// cliext_hash_set_find.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    System::Console::WriteLine("find {0} = {1}",
        L'A', c1.find(L'A') != c1.end());
    System::Console::WriteLine("find {0} = {1}",
        L'b', *c1.find(L'b'));
    System::Console::WriteLine("find {0} = {1}",
        L'C', c1.find(L'C') != c1.end());
    return (0);
    }
a b c
find A = False
find b = b
find C = False

hash_set::generic_container (STL/CLR)

Der Typ der generischen Schnittstelle für den Container.

Syntax

typedef Microsoft::VisualC::StlClr::
    IHash<GKey, GValue>
    generic_container;

Hinweise

Der Typ beschreibt die generische Schnittstelle für diese Vorlagencontainerklasse.

Beispiel

// cliext_hash_set_generic_container.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct a generic container
    Myhash_set::generic_container^ gc1 = %c1;
    for each (wchar_t elem in gc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // modify generic and display original
    gc1->insert(L'd');
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // modify original and display generic
    c1.insert(L'e');
    for each (wchar_t elem in gc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
a b c
a b c d
a b c d e

hash_set::generic_iterator (STL/CLR)

Der Typ eines Iterators für die Verwendung mit der generischen Schnittstelle für den Container.

Syntax

typedef Microsoft::VisualC::StlClr::Generic::
    ContainerBidirectionalIterator<generic_value>
    generic_iterator;

Hinweise

Der Typ beschreibt einen generischen Iterator, der mit der generischen Schnittstelle für diese Vorlagencontainerklasse verwendet werden kann.

Beispiel

// cliext_hash_set_generic_iterator.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct a generic container
    Myhash_set::generic_container^ gc1 = %c1;
    for each (wchar_t elem in gc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // get an element and display it
    Myhash_set::generic_iterator gcit = gc1->begin();
    Myhash_set::generic_value gcval = *gcit;
    System::Console::WriteLine("{0} ", gcval);
    return (0);
    }
a b c
a b c
a

hash_set::generic_reverse_iterator (STL/CLR)

Der Typ eines Reverse-Iterators für die Verwendung mit der generischen Schnittstelle für den Container.

Syntax

typedef Microsoft::VisualC::StlClr::Generic::
    ReverseRandomAccessIterator<generic_value>
    generic_reverse_iterator;

Hinweise

Der Typ beschreibt einen generischen Reverse-Iterator, der mit der generischen Schnittstelle für diese Vorlagencontainerklasse verwendet werden kann.

Beispiel

// cliext_hash_set_generic_reverse_iterator.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct a generic container
    Myhash_set::generic_container^ gc1 = %c1;
    for each (wchar_t elem in gc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // get an element and display it
    Myhash_set::generic_reverse_iterator gcit = gc1->rbegin();
    Myhash_set::generic_value gcval = *gcit;
    System::Console::WriteLine("{0} ", gcval);
    return (0);
    }
a b c
a b c
c

hash_set::generic_value (STL/CLR)

Der Typ eines Elements für die Verwendung mit der generischen Schnittstelle für den Container.

Syntax

typedef GValue generic_value;

Hinweise

Der Typ beschreibt ein Objekt des Typs GValue , das den gespeicherten Elementwert beschreibt, der mit der generischen Schnittstelle für diese Vorlagencontainerklasse verwendet wird.

Beispiel

// cliext_hash_set_generic_value.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct a generic container
    Myhash_set::generic_container^ gc1 = %c1;
    for each (wchar_t elem in gc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // get an element and display it
    Myhash_set::generic_iterator gcit = gc1->begin();
    Myhash_set::generic_value gcval = *gcit;
    System::Console::WriteLine("{0} ", gcval);
    return (0);
    }
a b c
a b c
a

hash_set::hash_delegate (STL/CLR)

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

Syntax

hasher^ hash_delegate();

Hinweise

Die Memberfunktion gibt den Stellvertretung zurück, der zum Konvertieren eines Schlüsselwerts in eine ganze Zahl verwendet wird. Sie verwenden es, um einen Schlüssel zu hashen.

Beispiel

// cliext_hash_set_hash_delegate.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    Myhash_set::hasher^ myhash = c1.hash_delegate();

    System::Console::WriteLine("hash(L'a') = {0}", myhash(L'a'));
    System::Console::WriteLine("hash(L'b') = {0}", myhash(L'b'));
    return (0);
    }
hash(L'a') = 1616896120
hash(L'b') = 570892832

hash_set::hash_set (STL/CLR)

Erstellt ein container-Objekt.

Syntax

hash_set();
explicit hash_set(key_compare^ pred);
hash_set(key_compare^ pred, hasher^ hashfn);
hash_set(hash_set<Key>% right);
hash_set(hash_set<Key>^ right);
template<typename InIter>
    hash_sethash_set(InIter first, InIter last);
template<typename InIter>
    hash_set(InIter first, InIter last,
        key_compare^ pred);
template<typename InIter>
    hash_set(InIter first, InIter last,
        key_compare^ pred, hasher^ hashfn);
hash_set(System::Collections::Generic::IEnumerable<GValue>^ right);
hash_set(System::Collections::Generic::IEnumerable<GValue>^ right,
    key_compare^ pred);
hash_set(System::Collections::Generic::IEnumerable<GValue>^ right,
    key_compare^ pred, hasher^ hashfn);

Parameter

first
Anfang des zu einfügenden Bereichs.

Hashfn
Hashfunktion für die Zuordnung von Schlüsseln zu Buckets.

last
Ende des zu einfügenden Bereichs.

Pred
Bestell prädikat für die kontrollierte Sequenz.

right
Einzufügendes Objekt bzw. einzufügender Bereich.

Hinweise

Der Konstruktor:

hash_set();

initialisiert die kontrollierte Sequenz ohne Elemente, mit dem Standardreihenfolge-Prädikat key_compare()und mit der Standard-Hashfunktion. Sie verwenden es, um eine leere anfängliche kontrollierte Sequenz mit der Standardreihenfolge und Hashfunktion anzugeben.

Der Konstruktor:

explicit hash_set(key_compare^ pred);

initialisiert die kontrollierte Sequenz ohne Elemente, mit der Reihenfolge prädikat pred und mit der Standard-Hashfunktion. Sie verwenden es, um eine leere anfängliche kontrollierte Sequenz anzugeben, wobei die angegebene Reihenfolge prädikat und die Standard-Hashfunktion angegeben werden.

Der Konstruktor:

hash_set(key_compare^ pred, hasher^ hashfn);

initialisiert die kontrollierte Sequenz ohne Elemente, mit der Reihenfolge prädikat pred und mit der Hashfunktion Hashfn. Sie verwenden es, um eine leere anfängliche kontrollierte Sequenz mit der angegebenen Prädikat- und Hashfunktion anzugeben.

Der Konstruktor:

hash_set(hash_set<Key>% right);

initialisiert die kontrollierte Sequenz mit der Sequenz [right.begin(), right.end()), mit dem Standardreihenfolge-Prädikat und mit der Standardhashfunktion. Sie verwenden es, um eine anfängliche kontrollierte Sequenz anzugeben, die eine Kopie der Sequenz ist, die von dem hash_set-Objekt rechts gesteuert wird, mit der Standardreihenfolge-Prädikat- und Hashfunktion.

Der Konstruktor:

hash_set(hash_set<Key>^ right);

initialisiert die kontrollierte Sequenz mit der Sequenz [right->begin(), right->end()), mit dem Standardreihenfolge-Prädikat und mit der Standardhashfunktion. Sie verwenden es, um eine anfängliche kontrollierte Sequenz anzugeben, die eine Kopie der Sequenz ist, die von dem hash_set-Objekt rechts gesteuert wird, mit der Standardreihenfolge-Prädikat- und Hashfunktion.

Der Konstruktor:

template<typename InIter> hash_set(InIter first, InIter last);

initialisiert die kontrollierte Sequenz mit der Sequenz [first, last), mit dem Standardreihenfolge-Prädikat und mit der Standardhashfunktion. Sie verwenden es, um die kontrollierte Sequenz eine Kopie einer anderen Sequenz mit der Standardreihenfolge-Prädikat- und Hashfunktion zu erstellen.

Der Konstruktor:

template<typename InIter> hash_set(InIter first, InIter last, key_compare^ pred);

initialisiert die kontrollierte Sequenz mit der Sequenz [first, last), mit dem Prädikat der Reihenfolge und mit der Standard-Hashfunktion. Sie verwenden es, um die kontrollierte Sequenz eine Kopie einer anderen Sequenz mit der angegebenen Reihenfolge-Prädikat und der Standard-Hashfunktion zu erstellen.

Der Konstruktor:

template<typename InIter> hash_set(InIter first, InIter last, key_compare^ pred, hasher^ hashfn);

initialisiert die kontrollierte Sequenz mit der Sequenz [first, last), mit der Reihenfolge prädikat pred und mit der Hashfunktion Hashfn. Sie verwenden es, um die kontrollierte Sequenz zu einer Kopie einer anderen Sequenz mit der angegebenen Reihenfolge-Prädikat- und Hashfunktion zu machen.

Der Konstruktor:

hash_set(System::Collections::Generic::IEnumerable<Key>^ right);

initialisiert die kontrollierte Sequenz mit der sequenz, die vom Enumerator rechts festgelegt ist, mit dem Standardreihenfolge-Prädikat und mit der Standardhashfunktion. Sie verwenden es, um die kontrollierte Sequenz eine Kopie einer anderen Sequenz zu erstellen, die von einer Aufzählung beschrieben wird, wobei die Standardreihenfolge Prädikat und Hashfunktion verwendet wird.

Der Konstruktor:

hash_set(System::Collections::Generic::IEnumerable<Key>^ right, key_compare^ pred);

initialisiert die kontrollierte Sequenz mit der sequenz, die vom Enumerator rechts festgelegt ist, mit der Reihenfolge Prädikat pred und mit der Standard-Hashfunktion. Sie verwenden es, um die kontrollierte Sequenz zu einer Kopie einer anderen Sequenz zu erstellen, die von einer Aufzählung beschrieben wird, wobei die angegebene Reihenfolge Prädikat- und Standardhashfunktion angegeben ist.

Der Konstruktor:

hash_set(System::Collections::Generic::IEnumerable<Key>^ right, key_compare^ pred, hasher^ hashfn);

initialisiert die kontrollierte Sequenz mit der sequenz, die vom Enumerator rechts festgelegt ist, mit der Reihenfolge prädikat pred und mit der Hashfunktion Hashfn. Sie verwenden es, um die kontrollierte Sequenz zu einer Kopie einer anderen Sequenz zu erstellen, die von einer Aufzählung beschrieben wird, mit der angegebenen Reihenfolge-Prädikat- und Hashfunktion.

Beispiel

// cliext_hash_set_construct.cpp
// compile with: /clr
#include <cliext/hash_set>

int myfun(wchar_t key)
    { // hash a key
    return (key ^ 0xdeadbeef);
    }

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
// construct an empty container
    Myhash_set c1;
    System::Console::WriteLine("size() = {0}", c1.size());

    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an ordering rule
    Myhash_set c2 = cliext::greater_equal<wchar_t>();
    System::Console::WriteLine("size() = {0}", c2.size());

    c2.insert(c1.begin(), c1.end());
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an ordering rule and hash function
    Myhash_set c2h(cliext::greater_equal<wchar_t>(),
        gcnew Myhash_set::hasher(&myfun));
    System::Console::WriteLine("size() = {0}", c2h.size());

    c2h.insert(c1.begin(), c1.end());
    for each (wchar_t elem in c2h)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine();

    // construct with an iterator range
    Myhash_set c3(c1.begin(), c1.end());
    for each (wchar_t elem in c3)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an iterator range and an ordering rule
    Myhash_set c4(c1.begin(), c1.end(),
        cliext::greater_equal<wchar_t>());
    for each (wchar_t elem in c4)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an iterator range and an ordering rule and hash function
    Myhash_set c4h(c1.begin(), c1.end(),
        cliext::greater_equal<wchar_t>(),
        gcnew Myhash_set::hasher(&myfun));
    for each (wchar_t elem in c4h)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine();

    // construct with an enumeration
    Myhash_set c5(   // NOTE: cast is not needed
        (System::Collections::Generic::IEnumerable<wchar_t>^)%c3);
    for each (wchar_t elem in c5)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an enumeration and an ordering rule
    Myhash_set c6(   // NOTE: cast is not needed
        (System::Collections::Generic::IEnumerable<wchar_t>^)%c3,
            cliext::greater_equal<wchar_t>());
    for each (wchar_t elem in c6)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an enumeration and an ordering rule and hash function
    Myhash_set c6h(   // NOTE: cast is not needed
        (System::Collections::Generic::IEnumerable<wchar_t>^)%c3,
            cliext::greater_equal<wchar_t>(),
                gcnew Myhash_set::hasher(&myfun));
    for each (wchar_t elem in c6h)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine();

    // construct from a generic container
    Myhash_set c7(c4);
    for each (wchar_t elem in c7)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct by copying another container
    Myhash_set c8(%c3);
    for each (wchar_t elem in c8)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
size() = 0
a b c
size() = 0
a b c
size() = 0
c b a

a b c
a b c
c b a

a b c
a b c
c b a

a b c
a b c

hash_set::hasher (STL/CLR)

Der Hashingstellvertretung für einen Schlüssel.

Syntax

Microsoft::VisualC::StlClr::UnaryDelegate<GKey, int>
    hasher;

Hinweise

Der Typ beschreibt einen Stellvertretung, der einen Schlüsselwert in eine ganze Zahl konvertiert.

Beispiel

// cliext_hash_set_hasher.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    Myhash_set::hasher^ myhash = c1.hash_delegate();

    System::Console::WriteLine("hash(L'a') = {0}", myhash(L'a'));
    System::Console::WriteLine("hash(L'b') = {0}", myhash(L'b'));
    return (0);
    }
hash(L'a') = 1616896120
hash(L'b') = 570892832

hash_set::insert (STL/CLR)

Fügt Elemente hinzu.

Syntax

cliext::pair<iterator, bool> insert(value_type val);
iterator insert(iterator where, value_type val);
template<typename InIter>
    void insert(InIter first, InIter last);
void insert(System::Collections::Generic::IEnumerable<value_type>^ right);

Parameter

first
Anfang des zu einfügenden Bereichs.

last
Ende des zu einfügenden Bereichs.

right
Aufzählung, die eingefügt werden soll.

Val
Schlüsselwert, der eingefügt werden soll.

where
Wo im Container eingefügt werden soll (nur Hinweis).

Hinweise

Jede der Memberfunktionen fügt eine Sequenz ein, die von den verbleibenden Operanden angegeben wird.

Die erste Memberfunktion bemüht sich, ein Element mit Wertwert val einzufügen, und gibt ein Paar Werte Xzurück. Wenn X.second es wahr ist, gibt das neu eingefügte Element an. Andernfalls X.first wird ein Element mit gleichwertiger Reihenfolge angegeben, X.first die bereits vorhanden ist und kein neues Element eingefügt wird. Sie verwenden es, um ein einzelnes Element einzufügen.

Die zweite Memberfunktion fügt ein Element mit Wertwert val ein , wobei als Hinweis (zur Verbesserung der Leistung) ein Element eingefügt wird und ein Iterator zurückgegeben wird, der das neu eingefügte Element angibt. Sie verwenden es, um ein einzelnes Element einzufügen, das möglicherweise neben einem element liegt, das Sie kennen.

Die dritte Memberfunktion fügt die Sequenz [first, last). Sie verwenden es, um null oder mehr Elemente aus einer anderen Sequenz einzufügen.

Die vierte Memberfunktion fügt die Sequenz ein, die von der rechten Seite festgelegt ist. Sie verwenden es, um eine Sequenz einzufügen, die von einem Aufzählerator beschrieben wird.

Jede Elementeinfügeung dauert zeit proportional zum Logarithmus der Anzahl der Elemente in der kontrollierten Sequenz. Die Einfügezeit kann jedoch in amortisierten Konstantenzeit auftreten, wenn ein Hinweis angegeben wird, das ein Element an der Einfügemarke angibt.

Beispiel

// cliext_hash_set_insert.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
typedef Myhash_set::pair_iter_bool Pairib;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // insert a single value, unique and duplicate
    Pairib pair1 = c1.insert(L'x');
    System::Console::WriteLine("insert(L'x') = [{0} {1}]",
        *pair1.first, pair1.second);

    pair1 = c1.insert(L'b');
    System::Console::WriteLine("insert(L'b') = [{0} {1}]",
        *pair1.first, pair1.second);

    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // insert a single value with hint
    System::Console::WriteLine("insert(begin(), L'y') = {0}",
        *c1.insert(c1.begin(), L'y'));
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // insert an iterator range
    Myhash_set c2;
    Myhash_set::iterator it = c1.end();
    c2.insert(c1.begin(), --it);
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // insert an enumeration
    Myhash_set c3;
    c3.insert(   // NOTE: cast is not needed
        (System::Collections::Generic::IEnumerable<wchar_t>^)%c1);
    for each (wchar_t elem in c3)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
insert(L'x') = [x True]
insert(L'b') = [b False]
a b c x
insert(begin(), L'y') = y
a b c x y
a b c x
a b c x y

hash_set::iterator (STL/CLR)

Der Typ eines Iterators für die gesteuerte Sequenz.

Syntax

typedef T1 iterator;

Hinweise

Der Typ beschreibt ein Objekt nicht angegebener Typs T1 , das als bidirektionales Iterator für die kontrollierte Sequenz dienen kann.

Beispiel

// cliext_hash_set_iterator.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display contents " a b c"
    Myhash_set::iterator it = c1.begin();
    for (; it != c1.end(); ++it)
        System::Console::Write("{0} ", *it);
    System::Console::WriteLine();
    return (0);
    }
a b c

hash_set::key_comp (STL/CLR)

Kopiert den Bestellstellvertretung für zwei Schlüssel.

Syntax

key_compare^key_comp();

Hinweise

Die Memberfunktion gibt den Bestellstellvertretung zurück, der zum Anordnen der kontrollierten Sequenz verwendet wird. Damit können Sie zwei Schlüssel vergleichen.

Beispiel

// cliext_hash_set_key_comp.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    Myhash_set::key_compare^ kcomp = c1.key_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        kcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        kcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        kcomp(L'b', L'a'));
    System::Console::WriteLine();

    // test a different ordering rule
    Myhash_set c2 = cliext::greater<wchar_t>();
    kcomp = c2.key_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        kcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        kcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        kcomp(L'b', L'a'));
    return (0);
    }
compare(L'a', L'a') = True
compare(L'a', L'b') = True
compare(L'b', L'a') = False

compare(L'a', L'a') = False
compare(L'a', L'b') = False
compare(L'b', L'a') = True

hash_set::key_compare (STL/CLR)

Der Bestellstellvertretung für zwei Schlüssel.

Syntax

Microsoft::VisualC::StlClr::BinaryDelegate<GKey, GKey, bool>
    key_compare;

Hinweise

Der Typ ist ein Synonym für den Stellvertretung, der die Reihenfolge seiner Schlüsselargumente bestimmt.

Beispiel

// cliext_hash_set_key_compare.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    Myhash_set::key_compare^ kcomp = c1.key_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        kcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        kcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        kcomp(L'b', L'a'));
    System::Console::WriteLine();

    // test a different ordering rule
    Myhash_set c2 = cliext::greater<wchar_t>();
    kcomp = c2.key_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        kcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        kcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        kcomp(L'b', L'a'));
    return (0);
    }
compare(L'a', L'a') = True
compare(L'a', L'b') = True
compare(L'b', L'a') = False

compare(L'a', L'a') = False
compare(L'a', L'b') = False
compare(L'b', L'a') = True

hash_set::key_type (STL/CLR)

Der Typ eines Sortierschlüssels.

Syntax

typedef Key key_type;

Hinweise

Der Typ ist ein Synonym für den Vorlagenparameter Key.

Beispiel

// cliext_hash_set_key_type.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display contents " a b c" using key_type
    for (Myhash_set::iterator it = c1.begin(); it != c1.end(); ++it)
        {   // store element in key_type object
        Myhash_set::key_type val = *it;

        System::Console::Write("{0} ", val);
        }
    System::Console::WriteLine();
    return (0);
    }
a b c

hash_set::load_factor (STL/CLR)

Zählt die durchschnittliche Anzahl von Elementen pro Bucket.

Syntax

float load_factor();

Hinweise

Die Memberfunktion gibt hash_set::Size (STL/CLR)hash_set::bucket_count (STL/CLR)() /() zurück(float). Sie verwenden es, um die durchschnittliche Bucketgröße zu bestimmen.

Beispiel

// cliext_hash_set_load_factor.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect current parameters
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    System::Console::WriteLine();

    // change max_load_factor and redisplay
    c1.max_load_factor(0.25f);
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    System::Console::WriteLine();

    // rehash and redisplay
    c1.rehash(100);
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    return (0);
    }
a b c
bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 4

bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 0.25

bucket_count() = 128
load_factor() = 0.0234375
max_load_factor() = 0.25

hash_set::lower_bound (STL/CLR)

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

Syntax

iterator lower_bound(key_type key);

Parameter

key
Der zu suchende Schlüsselwert.

Hinweise

Die Memberfunktion bestimmt das erste Element X in der kontrollierten Sequenz, das sich auf denselben Bucket als Schlüssel bezieht und die entsprechende Reihenfolge aufweist. Wenn kein solches Element vorhanden ist, gibt sie hash_set::End (STL/CLR)() zurück. Andernfalls wird ein Iterator zurückgegeben, der angibt X. Sie verwenden es, um den Anfang einer Sequenz von Elementen zu suchen, die derzeit in der kontrollierten Sequenz mit einem angegebenen Schlüssel übereinstimmen.

Beispiel

// cliext_hash_set_lower_bound.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    System::Console::WriteLine("lower_bound(L'x')==end() = {0}",
        c1.lower_bound(L'x') == c1.end());

    System::Console::WriteLine("*lower_bound(L'a') = {0}",
        *c1.lower_bound(L'a'));
    System::Console::WriteLine("*lower_bound(L'b') = {0}",
        *c1.lower_bound(L'b'));
    return (0);
    }
a b c
lower_bound(L'x')==end() = True
*lower_bound(L'a') = a
*lower_bound(L'b') = b

hash_set::make_value (STL/CLR)

Erstellt ein Wertobjekt.

Syntax

static value_type make_value(key_type key);

Parameter

key
Schlüsselwert, der verwendet werden soll.

Hinweise

Die Memberfunktion gibt ein value_type Objekt zurück, dessen Schlüssel schlüssel ist. Sie verwenden es, um ein Objekt zu verfassen, das für die Verwendung mit mehreren anderen Memberfunktionen geeignet ist.

Beispiel

// cliext_hash_set_make_value.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(Myhash_set::make_value(L'a'));
    c1.insert(Myhash_set::make_value(L'b'));
    c1.insert(Myhash_set::make_value(L'c'));

    // display contents " a b c"
    for each (Myhash_set::value_type elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c

hash_set::max_load_factor (STL/CLR)

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

Syntax

float max_load_factor();
void max_load_factor(float new_factor);

Parameter

new_factor
Neuer maximaler Ladefaktor zum Speichern.

Hinweise

Die erste Memberfunktion gibt den aktuellen gespeicherten maximalen Ladefaktor zurück. Sie verwenden es, um die maximale durchschnittliche Bucketgröße zu bestimmen.

Die zweite Memberfunktion ersetzt den speicherhöchsten Ladefaktor durch new_factor. Es tritt keine automatische Wiederverwendung auf, bis ein nachfolgendes Einfügen erfolgt.

Beispiel

// cliext_hash_set_max_load_factor.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect current parameters
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    System::Console::WriteLine();

    // change max_load_factor and redisplay
    c1.max_load_factor(0.25f);
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    System::Console::WriteLine();

    // rehash and redisplay
    c1.rehash(100);
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    return (0);
    }

hash_set::operator= (STL/CLR)

Ersetzt die kontrollierte Sequenz.

Syntax

hash_set<Key>% operator=(hash_set<Key>% right);

Parameter

right
Der zu kopierende Container.

Hinweise

Der Memberoperator kopiert direkt im Objekt, und gibt dann zurück *this. Sie verwenden es, um die kontrollierte Sequenz durch eine Kopie der kontrollierten Sequenz rechts zu ersetzen.

Beispiel

// cliext_hash_set_operator_as.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display contents " a b c"
    for each (Myhash_set::value_type elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign to a new container
    Myhash_set c2;
    c2 = c1;
// display contents " a b c"
    for each (Myhash_set::value_type elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
a b c

hash_set::rbegin (STL/CLR)

Legt den Anfang der umgekehrten kontrollierten Sequenz fest.

Syntax

reverse_iterator rbegin();

Hinweise

Die Memberfunktion gibt einen Reverse-Iterator zurück, der das letzte Element der kontrollierten Sequenz oder nur außerhalb des Anfangs einer leeren Sequenz bestimmt. Demzufolge wird der beginning der umgekehrten Sequenz bestimmt. Sie können damit einen Iterator abrufen, der den current Anfang der kontrollierten Sequenz in umgekehrter Reihenfolge bestimmt; der Zustand kann sich jedoch ändern, sobald sich die Länge der kontrollierten Sequenz ändert.

Beispiel

// cliext_hash_set_rbegin.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect first two items in reversed sequence
    Myhash_set::reverse_iterator rit = c1.rbegin();
    System::Console::WriteLine("*rbegin() = {0}", *rit);
    System::Console::WriteLine("*++rbegin() = {0}", *++rit);
    return (0);
    }
a b c
*rbegin() = c
*++rbegin() = b

hash_set::reference (STL/CLR)

Der Typ eines Verweises auf ein Element.

Syntax

typedef value_type% reference;

Hinweise

Der Typ beschreibt einen Verweis auf ein Element.

Beispiel

// cliext_hash_set_reference.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    Myhash_set::iterator it = c1.begin();
    for (; it != c1.end(); ++it)
        {   // get a reference to an element
        Myhash_set::reference ref = *it;
        System::Console::Write("{0} ", ref);
        }
    System::Console::WriteLine();
    return (0);
    }
a b c

hash_set::rehash (STL/CLR)

Erstellt die Hashtabelle neu.

Syntax

void rehash();

Hinweise

Die Memberfunktion erstellt die Hashtabelle neu, um sicherzustellen, dass hash_set::load_factor (STL/CLR)hash_set::max_load_factor (STL/CLR)() <=. Andernfalls erhöht sich die Hashtabelle nach der Einfügemarke nur nach Bedarf. (Es wird nie automatisch in Größe reduziert.) Sie verwenden es, um die Größe der Hashtabelle anzupassen.

Beispiel

// cliext_hash_set_rehash.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect current parameters
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    System::Console::WriteLine();

    // change max_load_factor and redisplay
    c1.max_load_factor(0.25f);
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    System::Console::WriteLine();

    // rehash and redisplay
    c1.rehash(100);
    System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
    System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
    System::Console::WriteLine("max_load_factor() = {0}",
        c1.max_load_factor());
    return (0);
    }
a b c
bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 4

bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 0.25

bucket_count() = 128
load_factor() = 0.0234375
max_load_factor() = 0.25

hash_set::rend (STL/CLR)

Legt das Ende der umgekehrten kontrollierten Sequenz fest.

Syntax

reverse_iterator rend();

Hinweise

Die Memberfunktion gibt einen Umgekehrten Iterator zurück, der direkt über den Anfang der kontrollierten Sequenz verweist. Demzufolge wird der end der umgekehrten Sequenz bestimmt. Sie können damit einen Iterator abrufen, der das current Ende der kontrollierten Sequenz in umgekehrter Reihenfolge bestimmt; der Zustand kann sich jedoch ändern, sobald sich die Länge der kontrollierten Sequenz ändert.

Beispiel

// cliext_hash_set_rend.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect first two items
    Myhash_set::reverse_iterator rit = c1.rend();
    --rit;
    System::Console::WriteLine("*-- --rend() = {0}", *--rit);
    System::Console::WriteLine("*--rend() = {0}", *++rit);
    return (0);
    }
a b c
*-- --rend() = b
*--rend() = a

hash_set::reverse_iterator (STL/CLR)

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

Syntax

typedef T3 reverse_iterator;

Hinweise

Der Typ beschreibt ein Objekt nicht angegebener Typs T3 , das als Umgekehrter Iterator für die kontrollierte Sequenz dienen kann.

Beispiel

// cliext_hash_set_reverse_iterator.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display contents " a b c" reversed
    Myhash_set::reverse_iterator rit = c1.rbegin();
    for (; rit != c1.rend(); ++rit)
        System::Console::Write("{0} ", *rit);
    System::Console::WriteLine();
    return (0);
    }
c b a

hash_set::size (STL/CLR)

Ermittelt die Anzahl von Elementen.

Syntax

size_type size();

Hinweise

Die Memberfunktion gibt die Länge der gesteuerten Sequenz zurück. Sie verwenden es, um die Anzahl der elemente zu bestimmen, die sich derzeit in der kontrollierten Sequenz befindet. Wenn Sie sich darum kümmern, ob die Sequenz eine Nichtzerogröße aufweist, lesen Sie hash_set::empty (STL/CLR)().

Beispiel

// cliext_hash_set_size.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine("size() = {0} starting with 3", c1.size());

    // clear the container and reinspect
    c1.clear();
    System::Console::WriteLine("size() = {0} after clearing", c1.size());

    // add elements and clear again
    c1.insert(L'a');
    c1.insert(L'b');
    System::Console::WriteLine("size() = {0} after adding 2", c1.size());
    return (0);
    }
a b c
size() = 3 starting with 3
size() = 0 after clearing
size() = 2 after adding 2

hash_set::size_type (STL/CLR)

Der Typ eines signierten Abstands zwischen zwei Elementen.

Syntax

typedef int size_type;

Hinweise

Der Typ beschreibt eine nicht negative Elementanzahl.

Beispiel

// cliext_hash_set_size_type.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // compute positive difference
    Myhash_set::size_type diff = 0;
    for (Myhash_set::iterator it = c1.begin(); it != c1.end(); ++it)
        ++diff;
    System::Console::WriteLine("end()-begin() = {0}", diff);
    return (0);
    }
a b c
end()-begin() = 3

hash_set::swap (STL/CLR)

Vertauscht den Inhalt von zwei Containern.

Syntax

void swap(hash_set<Key>% right);

Parameter

right
Container für den Tausch von Inhalten.

Hinweise

Die Memberfunktion wechselt die kontrollierten Sequenzen zwischen this und rechts. Dies erfolgt in konstanter Zeit und löst keine Ausnahmen aus. Sie verwenden es als schnelle Möglichkeit, den Inhalt von zwei Containern auszutauschen.

Beispiel

// cliext_hash_set_swap.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct another container with repetition of values
    Myhash_set c2;
    c2.insert(L'd');
    c2.insert(L'e');
    c2.insert(L'f');
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // swap and redisplay
    c1.swap(c2);
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
d e f
d e f
a b c

hash_set::to_array (STL/CLR)

Kopiert die kontrollierte Sequenz in ein neues Array.

Syntax

cli::array<value_type>^ to_array();

Hinweise

Die Memberfunktion gibt ein Array zurück, das die kontrollierte Sequenz enthält. Sie verwenden es, um eine Kopie der kontrollierten Sequenz in Arrayform abzurufen.

Beispiel

// cliext_hash_set_to_array.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // copy the container and modify it
    cli::array<wchar_t>^ a1 = c1.to_array();

    c1.insert(L'd');
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // display the earlier array copy
    for each (wchar_t elem in a1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c d
a b c

hash_set::upper_bound (STL/CLR)

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

Syntax

iterator upper_bound(key_type key);

Parameter

key
Der zu suchende Schlüsselwert.

Hinweise

Die Memberfunktion bestimmt das letzte Element X in der kontrollierten Sequenz, das auf denselben Bucket wie Schlüssel hashet und die entsprechende Sortierung mit Schlüssel aufweist. Wenn kein solches Element vorhanden ist oder X wenn es sich um das letzte Element in der kontrollierten Sequenz handelt, gibt es hash_set::end (STL/CLR)(); andernfalls wird ein Iterator zurückgegeben, der das erste Element darüber hinaus Xbestimmt. Sie verwenden es, um das Ende einer Abfolge von Elementen zu suchen, die aktuell in der kontrollierten Sequenz mit einem angegebenen Schlüssel übereinstimmen.

Beispiel

// cliext_hash_set_upper_bound.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    System::Console::WriteLine("upper_bound(L'x')==end() = {0}",
        c1.upper_bound(L'x') == c1.end());

    System::Console::WriteLine("*upper_bound(L'a') = {0}",
        *c1.upper_bound(L'a'));
    System::Console::WriteLine("*upper_bound(L'b') = {0}",
        *c1.upper_bound(L'b'));
    return (0);
    }
a b c
upper_bound(L'x')==end() = True
*upper_bound(L'a') = b
*upper_bound(L'b') = c

hash_set::value_comp (STL/CLR)

Kopiert den Sortierstellvertretung für zwei Elementwerte.

Syntax

value_compare^ value_comp();

Hinweise

Die Memberfunktion gibt die Sortierstellvertretung zurück, die zum Sortieren der kontrollierten Sequenz verwendet wird. Sie verwenden es, um zwei Elementwerte zu vergleichen.

Beispiel

// cliext_hash_set_value_comp.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    Myhash_set::value_compare^ kcomp = c1.value_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        kcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        kcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        kcomp(L'b', L'a'));
    System::Console::WriteLine();
    return (0);
    }
compare(L'a', L'a') = True
compare(L'a', L'b') = True
compare(L'b', L'a') = False

hash_set::value_compare (STL/CLR)

Der Sortierstellvertretung für zwei Elementwerte.

Syntax

Microsoft::VisualC::StlClr::BinaryDelegate<generic_value, generic_value, bool>
    value_compare;

Hinweise

Der Typ ist ein Synonym für den Delegaten, der die Sortierung seiner Wertargumente bestimmt.

Beispiel

// cliext_hash_set_value_compare.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    Myhash_set::value_compare^ kcomp = c1.value_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        kcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        kcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        kcomp(L'b', L'a'));
    System::Console::WriteLine();
    return (0);
    }
compare(L'a', L'a') = True
compare(L'a', L'b') = True
compare(L'b', L'a') = False

hash_set::value_type (STL/CLR)

Der Typ eines Elements.

Syntax

typedef generic_value value_type;

Hinweise

Der Typ ist ein Synonym für generic_value.

Beispiel

// cliext_hash_set_value_type.cpp
// compile with: /clr
#include <cliext/hash_set>

typedef cliext::hash_set<wchar_t> Myhash_set;
int main()
    {
    Myhash_set c1;
    c1.insert(L'a');
    c1.insert(L'b');
    c1.insert(L'c');

    // display contents " a b c" using value_type
    for (Myhash_set::iterator it = c1.begin(); it != c1.end(); ++it)
        {   // store element in value_type object
        Myhash_set::value_type val = *it;

        System::Console::Write("{0} ", val);
        }
    System::Console::WriteLine();
    return (0);
    }
a b c