hash_set (STL/CLR)hash_set (STL/CLR)

Класс шаблона описывает объект, управляющий последовательностью элементов различной длины с двунаправленным доступом.The template class describes an object that controls a varying-length sequence of elements that has bidirectional access. Контейнер используется hash_set для управления последовательностью элементов в виде хэш-таблицы, каждой записи таблицы, в которой хранится двунаправленный связанный список узлов, и каждого узла, в котором хранится один элемент.You use the container hash_set to manage a sequence of elements as a hash table, each table entry storing a bidirectional linked list of nodes, and each node storing one element. Значение каждого элемента используется в качестве ключа для упорядочения последовательности.The value of each element is used as a key, for ordering the sequence.

В описании ниже GValue то же самое, что GKey , в свою очередь, совпадает с ключом , если только второй не является ссылочным типом, в этом случае — Key^ .In the description below, GValue is the same as GKey, which in turn is the same as Key unless the latter is a ref type, in which case it is Key^.

Синтаксис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>
    { ..... };

ПараметрыParameters

КлючKey
Тип ключа для элемента в управляемой последовательности.The type of the key component of an element in the controlled sequence.

ТребованияRequirements

Заголовок:<cliext/hash_set>Header: <cliext/hash_set>

Пространство имен: cliextNamespace: cliext

ОбъявленияDeclarations

Определение типаType Definition ОписаниеDescription
hash_set::const_iterator (STL/CLR)hash_set::const_iterator (STL/CLR) Тип постоянного итератора для управляемой последовательности.The type of a constant iterator for the controlled sequence.
hash_set::const_reference (STL/CLR)hash_set::const_reference (STL/CLR) Тип постоянной ссылки на элемент.The type of a constant reference to an element.
hash_set::const_reverse_iterator (STL/CLR)hash_set::const_reverse_iterator (STL/CLR) Тип постоянного обратного итератора для управляемой последовательности.The type of a constant reverse iterator for the controlled sequence.
hash_set::difference_type (STL/CLR)hash_set::difference_type (STL/CLR) Тип (возможно, со знаком) расстояния между двумя элементами.The type of a (possibly signed) distance between two elements.
hash_set::generic_container (STL/CLR)hash_set::generic_container (STL/CLR) Тип универсального интерфейса для контейнера.The type of the generic interface for the container.
hash_set::generic_iterator (STL/CLR)hash_set::generic_iterator (STL/CLR) Тип итератора для универсального интерфейса для контейнера.The type of an iterator for the generic interface for the container.
hash_set::generic_reverse_iterator (STL/CLR)hash_set::generic_reverse_iterator (STL/CLR) Тип реверсивного итератора для универсального интерфейса контейнера.The type of a reverse iterator for the generic interface for the container.
hash_set::generic_value (STL/CLR)hash_set::generic_value (STL/CLR) Тип элемента для универсального интерфейса контейнера.The type of an element for the generic interface for the container.
hash_set::hasher (STL/CLR)hash_set::hasher (STL/CLR) Делегат хеширования для ключа.The hashing delegate for a key.
hash_set::iterator (STL/CLR)hash_set::iterator (STL/CLR) Тип итератора для управляемой последовательности.The type of an iterator for the controlled sequence.
hash_set::key_compare (STL/CLR)hash_set::key_compare (STL/CLR) Делегат упорядочения для двух ключей.The ordering delegate for two keys.
hash_set::key_type (STL/CLR)hash_set::key_type (STL/CLR) Тип ключа упорядочения.The type of an ordering key.
hash_set::reference (STL/CLR)hash_set::reference (STL/CLR) Тип ссылки на элемент.The type of a reference to an element.
hash_set::reverse_iterator (STL/CLR)hash_set::reverse_iterator (STL/CLR) Тип обратного итератора для управляемой последовательности.The type of a reverse iterator for the controlled sequence.
hash_set::size_type (STL/CLR)hash_set::size_type (STL/CLR) Тип (неотрицательного) расстояния между двумя элементами.The type of a (non-negative) distance between two elements.
hash_set::value_compare (STL/CLR)hash_set::value_compare (STL/CLR) Делегат упорядочивания для двух значений элементов.The ordering delegate for two element values.
hash_set::value_type (STL/CLR)hash_set::value_type (STL/CLR) Тип элемента.The type of an element.
Функция-членMember Function ОписаниеDescription
hash_set::begin (STL/CLR)hash_set::begin (STL/CLR) Задает начало управляемой последовательности.Designates the beginning of the controlled sequence.
hash_set::bucket_count (STL/CLR)hash_set::bucket_count (STL/CLR) Подсчитывает количество сегментов.Counts the number of buckets.
hash_set::clear (STL/CLR)hash_set::clear (STL/CLR) Удаляет все элементы.Removes all elements.
hash_set::count (STL/CLR)hash_set::count (STL/CLR) Подсчитывает число элементов, соответствующих указанному ключу.Counts elements matching a specified key.
hash_set::empty (STL/CLR)hash_set::empty (STL/CLR) Проверяет отсутствие элементов.Tests whether no elements are present.
hash_set::end (STL/CLR)hash_set::end (STL/CLR) Задает конец управляемой последовательности.Designates the end of the controlled sequence.
hash_set::equal_range (STL/CLR)hash_set::equal_range (STL/CLR) Находит диапазон, соответствующий указанному ключу.Finds range that matches a specified key.
hash_set::erase (STL/CLR)hash_set::erase (STL/CLR) Удаляет элементы в указанных позициях.Removes elements at specified positions.
hash_set::find (STL/CLR)hash_set::find (STL/CLR) Определяет элемент, соответствующий указанному ключу.Finds an element that matches a specified key.
hash_set::hash_delegate (STL/CLR)hash_set::hash_delegate (STL/CLR) Копирует делегат хеширования для ключа.Copies the hashing delegate for a key.
hash_set::hash_set (STL/CLR)hash_set::hash_set (STL/CLR) Создает объект контейнера.Constructs a container object.
hash_set::insert (STL/CLR)hash_set::insert (STL/CLR) Добавляет элементы.Adds elements.
hash_set::key_comp (STL/CLR)hash_set::key_comp (STL/CLR) Копирует делегат упорядочения для двух ключей.Copies the ordering delegate for two keys.
hash_set::load_factor (STL/CLR)hash_set::load_factor (STL/CLR) Подсчитывает среднее число элементов в блоке.Counts the average elements per bucket.
hash_set::lower_bound (STL/CLR)hash_set::lower_bound (STL/CLR) Находит начало диапазона, совпадающее с указанным ключом.Finds beginning of range that matches a specified key.
hash_set::make_value (STL/CLR)hash_set::make_value (STL/CLR) Конструирует объект значения.Constructs a value object.
hash_set::max_load_factor (STL/CLR)hash_set::max_load_factor (STL/CLR) Возвращает или задает максимальное количество элементов в блоке.Gets or sets the maximum elements per bucket.
hash_set::rbegin (STL/CLR)hash_set::rbegin (STL/CLR) Задает начало обратной управляемой последовательности.Designates the beginning of the reversed controlled sequence.
hash_set::rehash (STL/CLR)hash_set::rehash (STL/CLR) Повторно создает хэш-таблицу.Rebuilds the hash table.
hash_set::rend (STL/CLR)hash_set::rend (STL/CLR) Задает конец обратной управляемой последовательности.Designates the end of the reversed controlled sequence.
hash_set::size (STL/CLR)hash_set::size (STL/CLR) Подсчитывает количество элементов.Counts the number of elements.
hash_set::swap (STL/CLR)hash_set::swap (STL/CLR) Меняет местами содержимое двух контейнеров.Swaps the contents of two containers.
hash_set::to_array (STL/CLR)hash_set::to_array (STL/CLR) Копирует управляемую последовательность в новый массив.Copies the controlled sequence to a new array.
hash_set::upper_bound (STL/CLR)hash_set::upper_bound (STL/CLR) Находит конец диапазона, соответствующий указанному ключу.Finds end of range that matches a specified key.
hash_set::value_comp (STL/CLR)hash_set::value_comp (STL/CLR) Копирует делегат упорядочения для двух значений элементов.Copies the ordering delegate for two element values.
ОператорOperator ОписаниеDescription
hash_set::operator= (STL/CLR)hash_set::operator= (STL/CLR) Заменяет управляемую последовательность.Replaces the controlled sequence.

ИнтерфейсыInterfaces

ИнтерфейсInterface ОписаниеDescription
ICloneable Дублировать объект.Duplicate an object.
IEnumerable Последовательное упорядочение элементов.Sequence through elements.
ICollection Поддержка группы элементов.Maintain group of elements.
IEnumerable<T> Последовательность через типизированные элементы.Sequence through typed elements.
ICollection<T> Поддержание группы типизированных элементов.Maintain group of typed elements.
ихаш<Key, Value>IHash<Key, Value> Поддержание универсального контейнера.Maintain generic container.

КомментарииRemarks

Объект выделяет и освобождает хранилище для последовательности, которую он контролирует как отдельные узлы в двунаправленном связанном списке.The object allocates and frees storage for the sequence it controls as individual nodes in a bidirectional linked list. Для ускорения доступа объект также поддерживает массив указателей различной длины в список (хэш-таблицу), эффективно управляя всем списком в виде последовательности подсписков или контейнеров.To speed access, the object also maintains a varying-length array of pointers into the list (the hash table), effectively managing the whole list as a sequence of sublists, or buckets. Он вставляет элементы в контейнер, который сохраняется в порядке, изменяя связи между узлами, не копируя содержимое одного узла в другой.It inserts elements into a bucket that it keeps ordered by altering the links between nodes, never by copying the contents of one node to another. Это означает, что можно свободно вставлять и удалять элементы без нарушения работы остальных элементов.That means you can insert and remove elements freely without disturbing remaining elements.

Объект упорядочивает каждый контейнер, управляющий, путем вызова сохраненного объекта делегата типа hash_set:: key_compare (STL/CLR).The object orders each bucket it controls by calling a stored delegate object of type hash_set::key_compare (STL/CLR). При создании hash_set можно указать сохраненный объект делегата; Если объект делегата не указан, по умолчанию используется сравнение operator<=(key_type, key_type) .You can specify the stored delegate object when you construct the hash_set; if you specify no delegate object, the default is the comparison operator<=(key_type, key_type).

Доступ к сохраненному объекту делегата осуществляется путем вызова функции-члена hash_set:: key_comp (STL/CLR) () .You access the stored delegate object by calling the member function hash_set::key_comp (STL/CLR)(). Такой объект-делегат должен определять эквивалентное упорядочение между ключами типа hash_set:: key_type (STL/CLR).Such a delegate object must define equivalent ordering between keys of type hash_set::key_type (STL/CLR). Это означает, что для любых двух ключей X и Y :That means, for any two keys X and Y:

key_comp()(X, Y) Возвращает один и тот же логический результат при каждом вызове.key_comp()(X, Y) returns the same Boolean result on every call.

Если key_comp()(X, Y) && key_comp()(Y, X) имеет значение true, то X и Y говорят, что они имеют эквивалентное упорядочение.If key_comp()(X, Y) && key_comp()(Y, X) is true, then X and Y are said to have equivalent ordering.

Любое правило упорядочивания, которое ведет себя как operator<=(key_type, key_type) , operator>=(key_type, key_type) или operator==(key_type, key_type) определяет порядок екивалент.Any ordering rule that behaves like operator<=(key_type, key_type), operator>=(key_type, key_type) or operator==(key_type, key_type) defines eqivalent ordering.

Обратите внимание, что контейнер гарантирует, что все элементы, ключи которых имеют эквивалентное упорядочение (и какой хэш для одного и того же целого значения) являются смежными внутри контейнера.Note that the container ensures only that elements whose keys have equivalent ordering (and which hash to the same integer value) are adjacent within a bucket. В отличие от класса шаблона hash_multiset (STL/CLR), объект класса шаблона hash_set гарантирует уникальность ключей для всех элементов.Unlike template class hash_multiset (STL/CLR), an object of template class hash_set ensures that keys for all elements are unique. (Ни один из двух ключей не имеет эквивалентного порядка.)(No two keys have equivalent ordering.)

Объект определяет, какой сегмент должен содержать заданный ключ упорядочения, вызывая хранимый объект делегата типа hash_set:: hashing (STL/CLR).The object determines which bucket should contain a given ordering key by calling a stored delegate object of type hash_set::hasher (STL/CLR). Доступ к этому сохраненному объекту осуществляется путем вызова функции -члена hash_set:: hash_delegate (STL/CLR) () для получения целочисленного значения, которое зависит от значения ключа.You access this stored object by calling the member function hash_set::hash_delegate (STL/CLR)() to obtain an integer value that depends on the key value. При создании hash_set можно указать сохраненный объект делегата; Если объект делегата не указан, по умолчанию используется функция System::Object::hash_value(key_type) .You can specify the stored delegate object when you construct the hash_set; if you specify no delegate object, the default is the function System::Object::hash_value(key_type). Это означает, что для любых ключей X и Y :That means, for any keys X and Y:

hash_delegate()(X) Возвращает один и тот же целочисленный результат при каждом вызове.hash_delegate()(X) returns the same integer result on every call.

Если X и Y имеют эквивалентное упорядочение, то hash_delegate()(X) должен возвращать тот же самый целочисленный результат, что и hash_delegate()(Y) .If X and Y have equivalent ordering, then hash_delegate()(X) should return the same integer result as hash_delegate()(Y).

Каждый элемент выступает в качестве ключа и значения.Each element serves as both a key and a value. Последовательность представляется способом, который позволяет выполнять поиск, вставку и удаление произвольного элемента с несколькими операциями, не зависящими от числа элементов в последовательности (постоянное время) — по крайней мере, в лучших случаях.The sequence is represented in a way that permits lookup, insertion, and removal of an arbitrary element with a number of operations that is independent of the number of elements in the sequence (constant time) -- at least in the best of cases. Кроме того, вставка элементов не делает итераторы недействительными, а при удалении элементов недействительными становятся только итераторы, указывающие на удаленный элемент.Moreover, inserting an element invalidates no iterators, and removing an element invalidates only those iterators which point at the removed element.

Однако, если Хэшированные значения не распределяются равномерно, хэш-таблица может быть десформирована.If hashed values are not uniformly distributed, however, a hash table can degenerate. В экстремальной — для хэш-функции, которая всегда возвращает одно и то же значение--Уточняющий запрос, вставка и удаление пропорциональны количеству элементов в последовательности (линейное время).In the extreme -- for a hash function that always returns the same value -- lookup, insertion, and removal are proportional to the number of elements in the sequence (linear time). Контейнер пытается выбрать разумную хэш-функцию, среднее значение размера контейнера и размер таблицы хэша (общее количество контейнеров), но можно переопределить любой из этих вариантов или все эти варианты.The container endeavors to choose a reasonable hash function, mean bucket size, and hash-table size (total number of buckets), but you can override any or all of these choices. См., например, функции hash_set:: max_load_factor (STL/CLR) и hash_set:: rehash (STL/CLR).See, for example, the functions hash_set::max_load_factor (STL/CLR) and hash_set::rehash (STL/CLR).

Hash_set поддерживает двунаправленные итераторы. Это означает, что можно пошагово перейти к смежным элементам с помощью итератора, который обозначает элемент в управляемой последовательности.A hash_set supports bidirectional iterators, which means you can step to adjacent elements given an iterator that designates an element in the controlled sequence. Специальный головной узел соответствует итератору, возвращенному hash_set:: end (STL/CLR) () .A special head node corresponds to the iterator returned by hash_set::end (STL/CLR)(). Можно уменьшить этот итератор, чтобы достичь последнего элемента в управляемой последовательности, если он есть.You can decrement this iterator to reach the last element in the controlled sequence, if present. Вы можете увеличить hash_set итератора, чтобы достичь головного узла, а затем сравнить его со значением end() .You can increment a hash_set iterator to reach the head node, and it will then compare equal to end(). Но нельзя разыменование итератора, возвращаемого методом end() .But you cannot dereference the iterator returned by end().

Обратите внимание, что нельзя ссылаться на элемент hash_set напрямую, используя его числовое значение, для которого требуется итератор произвольного доступа.Note that you cannot refer to a hash_set element directly given its numerical position -- that requires a random-access iterator.

Итератор hash_set сохраняет обработчик для связанного с ним узла hash_set, который, в свою очередь, хранит маркер связанного с ним контейнера.A hash_set iterator stores a handle to its associated hash_set node, which in turn stores a handle to its associated container. Итераторы можно использовать только со связанными объектами контейнера.You can use iterators only with their associated container objects. Итератор hash_set остается действительным до тех пор, пока связанный с ним hash_set узел связан с некоторыми hash_set.A hash_set iterator remains valid so long as its associated hash_set node is associated with some hash_set. Более того, допустимый итератор — дереференкабле — вы можете использовать его для доступа к значению элемента, которое он определяет, или изменять его значение, если оно не равно end() .Moreover, a valid iterator is dereferencable -- you can use it to access or alter the element value it designates -- so long as it is not equal to end().

При стирании или удалении элемента вызывается деструктор для его сохраненного значения.Erasing or removing an element calls the destructor for its stored value. При уничтожении контейнера удаляются все элементы.Destroying the container erases all elements. Таким образом, контейнер, тип элемента которого является ссылочным классом, гарантирует, что контейнер не будет находиться ни в одной из элементов.Thus, a container whose element type is a ref class ensures that no elements outlive the container. Однако обратите внимание, что контейнер дескрипторов не уничтожает свои элементы.Note, however, that a container of handles does not destroy its elements.

ЭлементыMembers

hash_set:: Begin (STL/CLR)hash_set::begin (STL/CLR)

Задает начало управляемой последовательности.Designates the beginning of the controlled sequence.

СинтаксисSyntax

iterator begin();

RemarksRemarks

Функция-член возвращает двунаправленный итератор, который обозначает первый элемент управляемой последовательности или сразу за концом пустой последовательности.The member function returns a bidirectional iterator that designates the first element of the controlled sequence, or just beyond the end of an empty sequence. Используется для получения итератора, который задает начало управляемой последовательности с параметром current, однако в случае изменения длины управляемой последовательности его состояние может измениться.You use it to obtain an iterator that designates the current beginning of the controlled sequence, but its status can change if the length of the controlled sequence changes.

ПримерExample

// 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)hash_set::bucket_count (STL/CLR)

Подсчитывает количество сегментов.Counts the number of buckets.

СинтаксисSyntax

int bucket_count();

RemarksRemarks

Функции элементов возвращают текущее количество контейнеров.The member functions returns the current number of buckets. Он используется для определения размера хэш-таблицы.You use it to determine the size of the hash table.

ПримерExample

// 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)hash_set::clear (STL/CLR)

Удаляет все элементы.Removes all elements.

СинтаксисSyntax

void clear();

RemarksRemarks

Функция-член фактически вызывает hash_set:: Erase (STL/CLR) ( hash_set:: Begin (STL/CLR) (), hash_set:: end (STL/CLR) ()) .The member function effectively calls hash_set::erase (STL/CLR)( hash_set::begin (STL/CLR)(), hash_set::end (STL/CLR)()). Он используется, чтобы гарантировать, что управляемая последовательность пуста.You use it to ensure that the controlled sequence is empty.

ПримерExample

// 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)hash_set::const_iterator (STL/CLR)

Тип постоянного итератора для управляемой последовательности.The type of a constant iterator for the controlled sequence.

СинтаксисSyntax

typedef T2 const_iterator;

RemarksRemarks

Тип описывает объект неопределенного типа T2 , который может выступать в качестве постоянного двунаправленного итератора для управляемой последовательности.The type describes an object of unspecified type T2 that can serve as a constant bidirectional iterator for the controlled sequence.

ПримерExample

// 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)hash_set::const_reference (STL/CLR)

Тип постоянной ссылки на элемент.The type of a constant reference to an element.

СинтаксисSyntax

typedef value_type% const_reference;

RemarksRemarks

Тип описывает константную ссылку на элемент.The type describes a constant reference to an element.

ПримерExample

// 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)hash_set::const_reverse_iterator (STL/CLR)

Тип константного реверсивного итератора для управляемой последовательности.The type of a constant reverse iterator for the controlled sequence..

СинтаксисSyntax

typedef T4 const_reverse_iterator;

RemarksRemarks

Тип описывает объект неопределенного типа T4 , который может служить в качестве постоянного реверсивного итератора для управляемой последовательности.The type describes an object of unspecified type T4 that can serve as a constant reverse iterator for the controlled sequence.

ПримерExample

// 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)hash_set::count (STL/CLR)

Определяет количество элементов, соответствующих заданному ключу.Finds the number of elements matching a specified key.

СинтаксисSyntax

size_type count(key_type key);

ПараметрыParameters

keykey
Искомое значение ключа.Key value to search for.

КомментарииRemarks

Функция – член возвращает количество элементов в управляемой последовательности, имеющих эквивалентное упорядочение с ключом.The member function returns the number of elements in the controlled sequence that have equivalent ordering with key. Используется для определения количества элементов в управляемой последовательности, ключ которых в данный момент совпадает с заданным ключом.You use it to determine the number of elements currently in the controlled sequence that match a specified key.

ПримерExample

// 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::d ifference_type (STL/CLR)hash_set::difference_type (STL/CLR)

Типы расстояния со знаком между двумя элементами.The types of a signed distance between two elements.

СинтаксисSyntax

typedef int difference_type;

RemarksRemarks

Тип описывает возможное число отрицательных элементов.The type describes a possibly negative element count.

ПримерExample

// 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)hash_set::empty (STL/CLR)

Проверяет отсутствие элементов.Tests whether no elements are present.

СинтаксисSyntax

bool empty();

RemarksRemarks

Эта функция-член возвращает значение true для пустой управляемой последовательности.The member function returns true for an empty controlled sequence. Он эквивалентен hash_set:: size (STL/CLR) () == 0 .It is equivalent to hash_set::size (STL/CLR)() == 0. Он используется для проверки того, является ли hash_set пустым.You use it to test whether the hash_set is empty.

ПримерExample

// 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)hash_set::end (STL/CLR)

Задает конец управляемой последовательности.Designates the end of the controlled sequence.

СинтаксисSyntax

iterator end();

RemarksRemarks

Функция-член возвращает двунаправленный итератор, указывающий сразу за концом управляемой последовательности.The member function returns a bidirectional iterator that points just beyond the end of the controlled sequence. Он используется для получения итератора, который обозначает конец управляемой последовательности. его состояние не изменяется при изменении длины управляемой последовательности.You use it to obtain an iterator that designates the end of the controlled sequence; its status doesn not change if the length of the controlled sequence changes.

ПримерExample

// 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)hash_set::equal_range (STL/CLR)

Находит диапазон, соответствующий указанному ключу.Finds range that matches a specified key.

СинтаксисSyntax

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

ПараметрыParameters

keykey
Искомое значение ключа.Key value to search for.

КомментарииRemarks

Функция-член возвращает пару итераторов cliext::pair<iterator, iterator>( hash_set:: lower_bound (STL/CLR) (key), hash_set:: upper_bound (STL/CLR) (key)) .The member function returns a pair of iterators cliext::pair<iterator, iterator>( hash_set::lower_bound (STL/CLR)(key), hash_set::upper_bound (STL/CLR)(key)). Он используется для определения диапазона элементов, находящихся в настоящий момент в управляемой последовательности, соответствующей указанному ключу.You use it to determine the range of elements currently in the controlled sequence that match a specified key.

ПримерExample

// 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)hash_set::erase (STL/CLR)

Удаляет элементы в указанных позициях.Removes elements at specified positions.

СинтаксисSyntax

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

ПараметрыParameters

firstfirst
Начало диапазона для стирания.Beginning of range to erase.

keykey
Значение ключа для стирания.Key value to erase.

lastlast
Конец диапазона для стирания.End of range to erase.

wherewhere
Элемент для стирания.Element to erase.

КомментарииRemarks

Первая функция-член удаляет элемент управляемой последовательности, на который указывает, и возвращает итератор, который обозначает первый элемент, оставшийся после удаления элемента, или hash_set:: end (STL/CLR) , () Если такого элемента не существует.The first member function removes the element of the controlled sequence pointed to by where, and returns an iterator that designates the first element remaining beyond the element removed, or hash_set::end (STL/CLR)() if no such element exists. Он используется для удаления одного элемента.You use it to remove a single element.

Вторая функция-член удаляет элементы управляемой последовательности в диапазоне [ first , last ) и возвращает итератор, который обозначает первый элемент, оставшийся после удаления элементов, или значение, end() Если такого элемента не существует.The second member function removes the elements of the controlled sequence in the range [first, last), and returns an iterator that designates the first element remaining beyond any elements removed, or end() if no such element exists.. Он используется для удаления непрерывных или более смежных элементов.You use it to remove zero or more contiguous elements.

Третья функция-член удаляет любой элемент управляемой последовательности, ключ которой имеет эквивалентное упорядочение к ключу, и возвращает количество удаленных элементов.The third member function removes any element of the controlled sequence whose key has equivalent ordering to key, and returns a count of the number of elements removed. Он используется для удаления и подсчета всех элементов, соответствующих указанному ключу.You use it to remove and count all elements that match a specified key.

Каждый элемент очистки принимает время пропорционально логарифму числа элементов в управляемой последовательности.Each element erasure takes time proportional to the logarithm of the number of elements in the controlled sequence.

ПримерExample

// 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)hash_set::find (STL/CLR)

Определяет элемент, соответствующий указанному ключу.Finds an element that matches a specified key.

СинтаксисSyntax

iterator find(key_type key);

ПараметрыParameters

keykey
Искомое значение ключа.Key value to search for.

КомментарииRemarks

Если хотя бы один элемент в управляемой последовательности имеет эквивалентное упорядочение с ключом, функция – член возвращает итератор, обозначающий один из этих элементов. в противном случае возвращается hash_set:: end (STL/CLR) () .If at least one element in the controlled sequence has equivalent ordering with key, the member function returns an iterator designating one of those elements; otherwise it returns hash_set::end (STL/CLR)(). Его можно использовать для поиска элемента, находящегося в управляемой последовательности, соответствующей указанному ключу.You use it to locate an element currently in the controlled sequence that matches a specified key.

ПримерExample

// 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)hash_set::generic_container (STL/CLR)

Тип универсального интерфейса для контейнера.The type of the generic interface for the container.

СинтаксисSyntax

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

RemarksRemarks

Тип описывает универсальный интерфейс для этого класса контейнера шаблона.The type describes the generic interface for this template container class.

ПримерExample

// 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)hash_set::generic_iterator (STL/CLR)

Тип итератора для использования с универсальным интерфейсом для контейнера.The type of an iterator for use with the generic interface for the container.

СинтаксисSyntax

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

RemarksRemarks

Тип описывает универсальный итератор, который можно использовать с универсальным интерфейсом для этого класса контейнера шаблона.The type describes a generic iterator that can be used with the generic interface for this template container class.

ПримерExample

// 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)hash_set::generic_reverse_iterator (STL/CLR)

Тип реверсивного итератора для использования с универсальным интерфейсом для контейнера.The type of a reverse iterator for use with the generic interface for the container.

СинтаксисSyntax

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

RemarksRemarks

Тип описывает универсальный обратный итератор, который можно использовать с универсальным интерфейсом для этого класса контейнера шаблона.The type describes a generic reverse iterator that can be used with the generic interface for this template container class.

ПримерExample

// 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)hash_set::generic_value (STL/CLR)

Тип элемента для использования с универсальным интерфейсом для контейнера.The type of an element for use with the generic interface for the container.

СинтаксисSyntax

typedef GValue generic_value;

RemarksRemarks

Тип описывает объект типа GValue , описывающий сохраненное значение элемента для использования с универсальным интерфейсом для данного класса контейнера шаблона.The type describes an object of type GValue that describes the stored element value for use with the generic interface for this template container class.

ПримерExample

// 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)hash_set::hash_delegate (STL/CLR)

Определяет элемент, соответствующий указанному ключу.Finds an element that matches a specified key.

СинтаксисSyntax

hasher^ hash_delegate();

RemarksRemarks

Функция-член возвращает делегат, используемый для преобразования значения ключа в целое число.The member function returns the delegate used to convert a key value to an integer. Он используется для хэширования ключа.You use it to hash a key.

ПримерExample

// 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)hash_set::hash_set (STL/CLR)

Создает объект контейнера.Constructs a container object.

Синтаксис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);

ПараметрыParameters

firstfirst
Начало диапазона для вставки.Beginning of range to insert.

хашфнhashfn
Хэш-функция для сопоставления ключей с сегментами.Hash function for mapping keys to buckets.

lastlast
Конец диапазона для вставки.End of range to insert.

Возможенpred
Упорядочение предиката для управляемой последовательности.Ordering predicate for the controlled sequence.

Правильноright
Объект или диапазон для вставки.Object or range to insert.

КомментарииRemarks

Конструктор:The constructor:

hash_set();

инициализирует управляемую последовательность без элементов, с предикатом упорядочения по умолчанию key_compare() и с хэш-функцией по умолчанию.initializes the controlled sequence with no elements, with the default ordering predicate key_compare(), and with the default hash function. Он используется для указания пустой начальной управляемой последовательности с предикатом упорядочения по умолчанию и хэш-функцией.You use it to specify an empty initial controlled sequence, with the default ordering predicate and hash function.

Конструктор:The constructor:

explicit hash_set(key_compare^ pred);

инициализирует управляемую последовательность без элементов, с помощью предиката порядка " пред" и с хэш-функцией по умолчанию.initializes the controlled sequence with no elements, with the ordering predicate pred, and with the default hash function. Он используется для указания пустой начальной управляемой последовательности с указанным предикатом упорядочения и хэш-функцией по умолчанию.You use it to specify an empty initial controlled sequence, with the specified ordering predicate and the default hash function.

Конструктор:The constructor:

hash_set(key_compare^ pred, hasher^ hashfn);

инициализирует управляемую последовательность без элементов, с помощью предиката порядка " пред" и хэш-функции хашфн.initializes the controlled sequence with no elements, with the ordering predicate pred, and with the hash function hashfn. Он используется для указания пустой начальной управляемой последовательности с указанным предикатом упорядочения и хэш-функцией.You use it to specify an empty initial controlled sequence, with the specified ordering predicate and hash function.

Конструктор:The constructor:

hash_set(hash_set<Key>% right);

инициализирует управляемую последовательность с помощью последовательности [ right.begin() , right.end() ), с предикатом упорядочения по умолчанию и с хэш-функцией по умолчанию.initializes the controlled sequence with the sequence [right.begin(), right.end()), with the default ordering predicate, and with the default hash function. Он используется для указания начальной управляемой последовательности, которая является копией последовательности, управляемой объектом hash_set right, с предикатом упорядочения по умолчанию и хэш-функцией.You use it to specify an initial controlled sequence that is a copy of the sequence controlled by the hash_set object right, with the default ordering predicate and hash function.

Конструктор:The constructor:

hash_set(hash_set<Key>^ right);

инициализирует управляемую последовательность с помощью последовательности [ right->begin() , right->end() ), с предикатом упорядочения по умолчанию и с хэш-функцией по умолчанию.initializes the controlled sequence with the sequence [right->begin(), right->end()), with the default ordering predicate, and with the default hash function. Он используется для указания начальной управляемой последовательности, которая является копией последовательности, управляемой объектом hash_set right, с предикатом упорядочения по умолчанию и хэш-функцией.You use it to specify an initial controlled sequence that is a copy of the sequence controlled by the hash_set object right, with the default ordering predicate and hash function.

Конструктор:The constructor:

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

инициализирует управляемую последовательность с помощью последовательности [ first , last ), с предикатом упорядочения по умолчанию и с хэш-функцией по умолчанию.initializes the controlled sequence with the sequence [first, last), with the default ordering predicate, and with the default hash function. Он используется для того, чтобы управляемая последовательность была копией другой последовательности с предикатом упорядочения по умолчанию и хэш-функцией.You use it to make the controlled sequence a copy of another sequence, with the default ordering predicate and hash function.

Конструктор:The constructor:

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

инициализирует управляемую последовательность с помощью последовательности [ first , last ), с помощью предиката порядка " пред" и с хэш-функцией по умолчанию.initializes the controlled sequence with the sequence [first, last), with the ordering predicate pred, and with the default hash function. Он используется для того, чтобы управляемая последовательность была копией другой последовательности с указанным предикатом упорядочения и хэш-функцией по умолчанию.You use it to make the controlled sequence a copy of another sequence, with the specified ordering predicate and the default hash function.

Конструктор:The constructor:

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

инициализирует управляемую последовательность с помощью последовательности [ first , last ), с помощью предиката порядка " пред" и хэш-функции хашфн.initializes the controlled sequence with the sequence [first, last), with the ordering predicate pred, and with the hash function hashfn. Он используется для того, чтобы управляемая последовательность была копией другой последовательности с указанным предикатом упорядочения и хэш-функцией.You use it to make the controlled sequence a copy of another sequence, with the specified ordering predicate and hash function.

Конструктор:The constructor:

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

инициализирует управляемую последовательность с последовательностью, обозначенной справа перечислителем, с предикатом упорядочивания по умолчанию и с хэш-функцией по умолчанию.initializes the controlled sequence with the sequence designated by the enumerator right, with the default ordering predicate, and with the default hash function. Он используется для того, чтобы управляемая последовательность была копией другой последовательности, описываемой перечислителем, с предикатом упорядочения по умолчанию и хэш-функцией.You use it to make the controlled sequence a copy of another sequence described by an enumerator, with the default ordering predicate and hash function.

Конструктор:The constructor:

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

инициализирует управляемую последовательность с помощью последовательности, обозначенной правым перечислителем, с помощью предиката упорядочения пред и с хэш-функцией по умолчанию.initializes the controlled sequence with the sequence designated by the enumerator right, with the ordering predicate pred, and with the default hash function. Он используется для того, чтобы управляемая последовательность была копией другой последовательности, описываемой перечислителем, с указанным предикатом упорядочения и хэш-функцией по умолчанию.You use it to make the controlled sequence a copy of another sequence described by an enumerator, with the specified ordering predicate and default hash function.

Конструктор:The constructor:

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

инициализирует управляемую последовательность с помощью последовательности, обозначенной правым перечислителем, с помощью предиката упорядочения пред и с помощью хэш-функции хашфн.initializes the controlled sequence with the sequence designated by the enumerator right, with the ordering predicate pred, and with the hash function hashfn. Он используется для того, чтобы управляемая последовательность была копией другой последовательности, описываемой перечислителем, с указанным предикатом упорядочения и хэш-функцией.You use it to make the controlled sequence a copy of another sequence described by an enumerator, with the specified ordering predicate and hash function.

ПримерExample

// 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:: hashing (STL/CLR)hash_set::hasher (STL/CLR)

Делегат хеширования для ключа.The hashing delegate for a key.

СинтаксисSyntax

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

RemarksRemarks

Тип описывает делегат, который преобразует значение ключа в целое число.The type describes a delegate that converts a key value to an integer.

ПримерExample

// 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)hash_set::insert (STL/CLR)

Добавляет элементы.Adds elements.

Синтаксис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);

ПараметрыParameters

firstfirst
Начало диапазона для вставки.Beginning of range to insert.

lastlast
Конец диапазона для вставки.End of range to insert.

Правильноright
Перечисление для вставки.Enumeration to insert.

Valval
Значение ключа для вставки.Key value to insert.

wherewhere
Место вставки в контейнере (только указание).Where in container to insert (hint only).

КомментарииRemarks

Каждая из функций-членов вставляет последовательность, указанную оставшимися операндами.Each of the member functions inserts a sequence specified by the remaining operands.

Первая функция-член пытается вставить элемент со значением Val и возвращает пару значений X .The first member function endeavors to insert an element with value val, and returns a pair of values X. Если X.second имеет значение true, X.first то назначает вновь вставленный элемент; в противном случае X.first обозначает элемент с таким же порядковым порядком, который уже существует и не вставляет новый элемент.If X.second is true, X.first designates the newly inserted element; otherwise X.first designates an element with equivalent ordering that already exists and no new element is inserted. Он используется для вставки одного элемента.You use it to insert a single element.

Вторая функция-член вставляет элемент со значением Val, использование WHERE в качестве подсказки (для повышения производительности) и возвращает итератор, указывающий на вновь вставленный элемент.The second member function inserts an element with value val, using where as a hint (to improve performance), and returns an iterator that designates the newly inserted element. Он используется для вставки одного элемента, который может быть рядом с знакомым элементом.You use it to insert a single element which might be adjacent to an element you know.

Третья функция-член вставляет последовательность [ first , last ).The third member function inserts the sequence [first, last). Он используется для вставки одного или нескольких элементов, скопированных из другой последовательности.You use it to insert zero or more elements copied from another sequence.

Четвертая функция с членом вставляет последовательность, обозначенную справа.The fourth member function inserts the sequence designated by the right. Он используется для вставки последовательности, описанной перечислителем.You use it to insert a sequence described by an enumerator.

Каждая Вставка элемента занимает время пропорционально логарифму числа элементов в управляемой последовательности.Each element insertion takes time proportional to the logarithm of the number of elements in the controlled sequence. Вставка может происходить в неизменном времени, однако при наличии подсказки, которая обозначает элемент, смежный с точкой вставки.Insertion can occur in amortized constant time, however, given a hint that designates an element adjacent to the insertion point.

ПримерExample

// 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)hash_set::iterator (STL/CLR)

Тип итератора для управляемой последовательности.The type of an iterator for the controlled sequence.

СинтаксисSyntax

typedef T1 iterator;

RemarksRemarks

Тип описывает объект неопределенного типа T1 , который может использоваться в качестве двунаправленного итератора для управляемой последовательности.The type describes an object of unspecified type T1 that can serve as a bidirectional iterator for the controlled sequence.

ПримерExample

// 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)hash_set::key_comp (STL/CLR)

Копирует делегат упорядочения для двух ключей.Copies the ordering delegate for two keys.

СинтаксисSyntax

key_compare^key_comp();

RemarksRemarks

Функция – член возвращает делегат упорядочивания, используемый для упорядочивания управляемой последовательности.The member function returns the ordering delegate used to order the controlled sequence. Используется для сравнения двух ключей.You use it to compare two keys.

ПримерExample

// 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)hash_set::key_compare (STL/CLR)

Делегат упорядочения для двух ключей.The ordering delegate for two keys.

СинтаксисSyntax

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

RemarksRemarks

Тип является синонимом делегата, который определяет порядок ключевых аргументов.The type is a synonym for the delegate that determines the ordering of its key arguments.

ПримерExample

// 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)hash_set::key_type (STL/CLR)

Тип ключа упорядочения.The type of an ordering key.

СинтаксисSyntax

typedef Key key_type;

RemarksRemarks

Тип является синонимом для ключа параметра шаблона.The type is a synonym for the template parameter Key.

ПримерExample

// 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)hash_set::load_factor (STL/CLR)

Подсчитывает среднее число элементов в блоке.Counts the average elements per bucket.

СинтаксисSyntax

float load_factor();

RemarksRemarks

Функция-член возвращает (float) hash_set:: size (STL/CLR) () / hash_set:: bucket_count (STL/CLR) () .The member function returns (float)hash_set::size (STL/CLR)() / hash_set::bucket_count (STL/CLR)(). Он используется для определения среднего размера контейнера.You use it to determine the average bucket size.

ПримерExample

// 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)hash_set::lower_bound (STL/CLR)

Находит начало диапазона, совпадающее с указанным ключом.Finds beginning of range that matches a specified key.

СинтаксисSyntax

iterator lower_bound(key_type key);

ПараметрыParameters

keykey
Искомое значение ключа.Key value to search for.

КомментарииRemarks

Функция-член определяет первый элемент X в управляемой последовательности, который хэшируется в тот же контейнер, что и ключ , и имеет эквивалентное упорядочение к ключу.The member function determines the first element X in the controlled sequence that hashes to the same bucket as key and has equivalent ordering to key. Если такого элемента не существует, он возвращает hash_set:: end (STL/CLR) () ; в противном случае возвращается итератор, который обозначает X .If no such element exists, it returns hash_set::end (STL/CLR)(); otherwise it returns an iterator that designates X. Он используется для поиска начала последовательности элементов, находящихся в управляемой последовательности, соответствующей указанному ключу.You use it to locate the beginning of a sequence of elements currently in the controlled sequence that match a specified key.

ПримерExample

// 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)hash_set::make_value (STL/CLR)

Конструирует объект значения.Constructs a value object.

СинтаксисSyntax

static value_type make_value(key_type key);

ПараметрыParameters

keykey
Используемое значение ключа.Key value to use.

КомментарииRemarks

Функция-член возвращает value_type объект, ключ которого является ключом.The member function returns a value_type object whose key is key. Он используется для составления объекта, подходящего для использования с несколькими другими функциями элементов.You use it to compose an object suitable for use with several other member functions.

ПримерExample

// 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)hash_set::max_load_factor (STL/CLR)

Возвращает или задает максимальное количество элементов в блоке.Gets or sets the maximum elements per bucket.

СинтаксисSyntax

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

ПараметрыParameters

new_factornew_factor
Новый максимальный коэффициент нагрузки для хранения.New maximum load factor to store.

КомментарииRemarks

Первая функция – член возвращает текущий сохраненный фактор максимальной нагрузки.The first member function returns the current stored maximum load factor. Он используется для определения максимального среднего размера контейнера.You use it to determine the maximum average bucket size.

Вторая функция – член заменяет максимальный коэффициент загрузки хранилища на new_factor.The second member function replaces the store maximum load factor with new_factor. Автоматическая повторная хэширование не происходит до последующей вставки.No automatic rehashing occurs until a subsequent insert.

ПримерExample

// 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)hash_set::operator= (STL/CLR)

Заменяет управляемую последовательность.Replaces the controlled sequence.

СинтаксисSyntax

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

ПараметрыParameters

Правильноright
Контейнер для копирования.Container to copy.

КомментарииRemarks

Оператор члена копирует прямо в объект, а затем возвращает *this .The member operator copies right to the object, then returns *this. Он используется для замены управляемой последовательности копией управляемой последовательности в правой части.You use it to replace the controlled sequence with a copy of the controlled sequence in right.

ПримерExample

// 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)hash_set::rbegin (STL/CLR)

Задает начало обратной управляемой последовательности.Designates the beginning of the reversed controlled sequence.

СинтаксисSyntax

reverse_iterator rbegin();

RemarksRemarks

Функция-член возвращает обратный итератор, обозначающий последний элемент управляемой последовательности или сразу за началом пустой последовательности.The member function returns a reverse iterator that designates the last element of the controlled sequence, or just beyond the beginning of an empty sequence. Таким образом, он задает для обратной последовательности параметр beginning.Hence, it designates the beginning of the reverse sequence. Используется для получения итератора, который задает начало управляемой последовательности с параметром current, отображаемой в обратном порядке, однако в случае изменения длины управляемой последовательности его состояние может измениться.You use it to obtain an iterator that designates the current beginning of the controlled sequence seen in reverse order, but its status can change if the length of the controlled sequence changes.

ПримерExample

// 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)hash_set::reference (STL/CLR)

Тип ссылки на элемент.The type of a reference to an element.

СинтаксисSyntax

typedef value_type% reference;

RemarksRemarks

Тип описывает ссылку на элемент.The type describes a reference to an element.

ПримерExample

// 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)hash_set::rehash (STL/CLR)

Повторно создает хэш-таблицу.Rebuilds the hash table.

СинтаксисSyntax

void rehash();

RemarksRemarks

Функция-член перестраивает таблицу хэширования, гарантируя, что hash_set:: load_factor (STL/CLR) () <= hash_set:: max_load_factor (STL/CLR).The member function rebuilds the hash table, ensuring that hash_set::load_factor (STL/CLR)() <= hash_set::max_load_factor (STL/CLR). В противном случае размер хэш-таблицы увеличивается только по мере необходимости после вставки.Otherwise, the hash table increases in size only as needed after an insertion. (Размер не уменьшается автоматически.) Он используется для корректировки размера хэш-таблицы.(It never automatically decreases in size.) You use it to adjust the size of the hash table.

ПримерExample

// 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)hash_set::rend (STL/CLR)

Задает конец обратной управляемой последовательности.Designates the end of the reversed controlled sequence.

СинтаксисSyntax

reverse_iterator rend();

RemarksRemarks

Функция-член возвращает обратный итератор, указывающий сразу за начало управляемой последовательности.The member function returns a reverse iterator that points just beyond the beginning of the controlled sequence. Таким образом, он задает для обратной последовательности параметр end.Hence, it designates the end of the reverse sequence. Используется для получения итератора, который задает конец управляемой последовательности с параметром current, отображаемой в обратном порядке, однако в случае изменения длины управляемой последовательности его состояние может измениться.You use it to obtain an iterator that designates the current end of the controlled sequence seen in reverse order, but its status can change if the length of the controlled sequence changes.

ПримерExample

// 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)hash_set::reverse_iterator (STL/CLR)

Тип обратного итератора для управляемой последовательности.The type of a reverse iterator for the controlled sequence.

СинтаксисSyntax

typedef T3 reverse_iterator;

RemarksRemarks

Тип описывает объект неопределенного типа T3 , который может служить в качестве реверсивного итератора для управляемой последовательности.The type describes an object of unspecified type T3 that can serve as a reverse iterator for the controlled sequence.

ПримерExample

// 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)hash_set::size (STL/CLR)

Подсчитывает количество элементов.Counts the number of elements.

СинтаксисSyntax

size_type size();

RemarksRemarks

Функция-член возвращает длину управляемой последовательности.The member function returns the length of the controlled sequence. Он используется для определения количества элементов, находящихся в настоящий момент в управляемой последовательности.You use it to determine the number of elements currently in the controlled sequence. Если вас интересует только то, имеет ли последовательность ненулевой размер, см. раздел hash_set:: Empty (STL/CLR) () .If all you care about is whether the sequence has nonzero size, see hash_set::empty (STL/CLR)().

ПримерExample

// 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)hash_set::size_type (STL/CLR)

Тип расстояния со знаком между двумя элементами.The type of a signed distance between two element.

СинтаксисSyntax

typedef int size_type;

RemarksRemarks

Тип описывает неотрицательное число элементов.The type describes a non-negative element count.

ПримерExample

// 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)hash_set::swap (STL/CLR)

Меняет местами содержимое двух контейнеров.Swaps the contents of two containers.

СинтаксисSyntax

void swap(hash_set<Key>% right);

ПараметрыParameters

Правильноright
Контейнер для обмена содержимым.Container to swap contents with.

КомментарииRemarks

Функция – член меняет местами управляемые последовательности между this и вправо.The member function swaps the controlled sequences between this and right. Это происходит в постоянном времени и не создает исключений.It does so in constant time and it throws no exceptions. Он используется в качестве быстрого способа обмена содержимым двух контейнеров.You use it as a quick way to exchange the contents of two containers.

ПримерExample

// 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)hash_set::to_array (STL/CLR)

Копирует управляемую последовательность в новый массив.Copies the controlled sequence to a new array.

СинтаксисSyntax

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

RemarksRemarks

Функция члена возвращает массив, содержащий управляемую последовательность.The member function returns an array containing the controlled sequence. Он используется для получения копии управляемой последовательности в виде массива.You use it to obtain a copy of the controlled sequence in array form.

ПримерExample

// 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)hash_set::upper_bound (STL/CLR)

Находит конец диапазона, соответствующий указанному ключу.Finds end of range that matches a specified key.

СинтаксисSyntax

iterator upper_bound(key_type key);

ПараметрыParameters

keykey
Искомое значение ключа.Key value to search for.

КомментарииRemarks

Функция-член определяет последний элемент X в управляемой последовательности, который хэшируется в тот же контейнер, что и ключ , и имеет эквивалентное упорядочение к ключу.The member function determines the last element X in the controlled sequence that hashes to the same bucket as key and has equivalent ordering to key. Если такого элемента не существует или если X является последним элементом управляемой последовательности, возвращается hash_set:: end (STL/CLR) () ; в противном случае возвращается итератор, обозначающий первый элемент за пределами X .If no such element exists, or if X is the last element in the controlled sequence, it returns hash_set::end (STL/CLR)(); otherwise it returns an iterator that designates the first element beyond X. Он используется для поиска конца последовательности элементов, находящихся в управляемой последовательности, соответствующей указанному ключу.You use it to locate the end of a sequence of elements currently in the controlled sequence that match a specified key.

ПримерExample

// 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)hash_set::value_comp (STL/CLR)

Копирует делегат упорядочения для двух значений элементов.Copies the ordering delegate for two element values.

СинтаксисSyntax

value_compare^ value_comp();

RemarksRemarks

Функция – член возвращает делегат упорядочивания, используемый для упорядочивания управляемой последовательности.The member function returns the ordering delegate used to order the controlled sequence. Он используется для сравнения двух значений элементов.You use it to compare two element values.

ПримерExample

// 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)hash_set::value_compare (STL/CLR)

Делегат упорядочивания для двух значений элементов.The ordering delegate for two element values.

СинтаксисSyntax

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

RemarksRemarks

Тип является синонимом делегата, который определяет порядок аргументов его значения.The type is a synonym for the delegate that determines the ordering of its value arguments.

ПримерExample

// 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)hash_set::value_type (STL/CLR)

Тип элемента.The type of an element.

СинтаксисSyntax

typedef generic_value value_type;

RemarksRemarks

Тип является синонимом generic_value.The type is a synonym for generic_value.

ПримерExample

// 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