set (STL/CLR)

Класс шаблона описывает объект, который управляет последовательностью элементов с двунаправленным доступом. Контейнер set используется для управления последовательностью элементов в виде сбалансированного упорядоченного дерева узлов, каждого из которых хранится один элемент.

В приведенном ниже описании то же GKeyKey самое, что, в свою очередь, GValue совпадает с тем, что, если последний не является типом ссылок, в этом случае это Key^так.

Синтаксис

template<typename Key>
    ref class 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::ITree<Gkey, GValue>
    { ..... };

Параметры

Key
Тип ключевого компонента элемента в управляемой последовательности.

Требования

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

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

Объявления

Определение типа Description
set::const_iterator Тип постоянного итератора для управляемой последовательности.
set::const_reference Тип постоянной ссылки на элемент.
set::const_reverse_iterator Тип постоянного обратного итератора для управляемой последовательности.
set::difference_type Тип расстояния между двумя элементами (возможно, подписанным).
set::generic_container Тип универсального интерфейса для контейнера.
set::generic_iterator Тип итератора универсального интерфейса для контейнера.
set::generic_reverse_iterator Тип обратного итератора для универсального интерфейса контейнера.
set::generic_value Тип элемента универсального интерфейса для контейнера.
set::iterator Тип итератора для управляемой последовательности.
set::key_compare Делегат упорядочивания для двух ключей.
set::key_type Тип ключа упорядочения.
set::reference Тип ссылки на элемент.
set::reverse_iterator Тип обратного итератора для управляемой последовательности.
set::size_type Тип расстояния (не отрицательного) между двумя элементами.
set::value_compare Делегат упорядочивания для двух значений элементов.
set::value_type Тип элемента.
Функция-член Description
set::begin Задает начало управляемой последовательности.
set::clear Удаляет все элементы.
set::count Подсчитывает элементы, соответствующие указанному ключу.
set::empty Проверяет отсутствие элементов.
set::end Задает конец управляемой последовательности.
set::equal_range Находит диапазон, соответствующий указанному ключу.
set::erase Удаляет элементы в указанных позициях.
set::find Определяет элемент, соответствующий указанному ключу.
set::insert Добавляет элементы.
set::key_comp Копирует делегат упорядочивания для двух ключей.
set::lower_bound Находит начало диапазона, соответствующего указанному ключу.
set::make_value Создает объект value.
set::rbegin Задает начало обратной управляемой последовательности.
set::rend Задает конец обратной управляемой последовательности.
set::set Создает объект контейнера.
set::size Подсчитывает количество элементов.
set::swap Меняет местами содержимое двух контейнеров.
set::to_array Копирует контролируемую последовательность в новый массив.
set::upper_bound Находит конец диапазона, соответствующий указанному ключу.
set::value_comp Копирует делегат упорядочивания для двух значений элементов.
Operator Description
set::operator= Заменяет управляемую последовательность.
operator!= (set) Определяет, не равен ли set объект другому set объекту.
operator< (set) Определяет, меньше ли set объект, чем другой set объект.
operator<= (set) Определяет set , меньше ли объект или равен другому set объекту.
operator== (set) Определяет, равен ли set объект другому set объекту.
operator> (set) Определяет, больше ли set объект, чем другой set объект.
operator>= (set) Определяет set , больше ли объект или равен другому set объекту.

Интерфейсы

Интерфейс Description
ICloneable Дублировать объект.
IEnumerable Последовательность элементов.
ICollection Обслуживание группы элементов.
IEnumerable<T> Последовательность с помощью типизированных элементов.
ICollection<T> Сохраняйте группу типизированных элементов.
ITree<Key, Value> Обслуживание универсального контейнера.

Замечания

Объект выделяет и освобождает хранилище для последовательности, который он управляет как отдельные узлы. Он вставляет элементы в сбалансированное дерево , которое он сохраняет, изменяя связи между узлами, никогда не копируя содержимое одного узла в другой. Это означает, что вы можете свободно вставлять и удалять элементы без нарушения оставшихся элементов.

Объект упорядочивает последовательность, которую он управляет, вызывая сохраненный объект делегата типа set::key_compare. При создании набора можно указать сохраненный объект делегата; Если не указан объект делегата, по умолчанию используется сравнение operator<(key_type, key_type). Доступ к этому хранимой объекту выполняется путем вызова функции-члена set::key_comp.

Такой объект делегата должен навязать строгое слабое упорядочение для ключей типа set::key_type. Это означает, что для всех двух ключей X и Y:

key_comp()(X, Y) возвращает один и тот же логический результат для каждого вызова.

Если key_comp()(X, Y) значение имеет значение true, то key_comp()(Y, X) должно быть false.

Если key_comp()(X, Y) это правда, то X , как говорят, будет упорядочено раньше Y.

Если !key_comp()(X, Y) && !key_comp()(Y, X) это правда, то X и Y говорят, что имеет эквивалентный порядок.

Для любого элемента X , предшествующего Y управляемой последовательности, key_comp()(Y, X) имеет значение false. (Для объекта делегата по умолчанию ключи никогда не уменьшались.) В отличие от набора классов шаблонов, объект класса setшаблона не требует, чтобы ключи для всех элементов были уникальными. (Два или более ключей могут иметь эквивалентный порядок.)

Каждый элемент служит как ключом, так и значением. Последовательность представлена таким образом, чтобы разрешить поиск, вставку и удаление произвольного элемента в логарифмическом времени. То есть количество операций пропорционально логарифму числа элементов в последовательности. Кроме того, при вставке элемента не выполняется итератор, а удаление элемента делает недопустимым только те итераторы, которые указывают на удаленный элемент.

Поддерживает set двунаправленные итераторы, что означает, что можно переходить к смежным элементам с учетом итератора, обозначающего элемент в управляемой последовательности. Специальный головной узел соответствует итератору, возвращаемого end(). Этот итератор можно уменьшать, чтобы достичь последнего элемента в управляемой последовательности, если он присутствует. Вы можете увеличить set итератор для достижения головного узла, а затем сравнить его с равным end(). Но вы не можете разыменовать итератор, возвращенный end().

Нельзя ссылаться на элемент непосредственно с учетом его числовой set позиции. Для этого требуется итератор случайного доступа.

Итератор set сохраняет дескриптор на связанный set узел, который, в свою очередь, сохраняет дескриптор в связанном контейнере. Итераторы можно использовать только с связанными объектами контейнеров. Итератор set остается допустимым до тех пор, пока связанный set узел связан с некоторыми наборами. Кроме того, допустимый итератор является деreferencable. Его можно использовать для доступа или изменения значения элемента, указанного в нем, если оно не равно end().

Удаление или удаление элемента вызывает деструктор для его сохраненного значения. Удаление контейнера удаляет все элементы. Таким образом, контейнер, тип элемента которого является классом ссылок, гарантирует, что никакие элементы не выходят из контейнера. Однако контейнер дескрипторов не уничтожает его элементы.

Участники

set::begin

Задает начало управляемой последовательности.

Синтаксис

iterator begin();

Замечания

Функция-член возвращает двунаправленный итератор, указывающий первый элемент управляемой последовательности или только за пределами пустой последовательности. Он используется для получения итератора, который обозначает current начало управляемой последовательности, но его состояние может измениться, если длина управляемой последовательности изменяется.

Пример

// cliext_set_begin.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset::iterator it = c1.begin();
    System::Console::WriteLine("*begin() = {0}", *it);
    System::Console::WriteLine("*++begin() = {0}", *++it);
    return (0);
    }
a b c
*begin() = a
*++begin() = b

set::clear

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

Синтаксис

void clear();

Замечания

Функция-член фактически вызывает erase(begin(), end()). Используйте его, чтобы убедиться, что управляемая последовательность пуста.

Пример

// cliext_set_clear.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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

set::const_iterator

Тип постоянного итератора для управляемой последовательности.

Синтаксис

typedef T2 const_iterator;

Замечания

Тип описывает объект неопределенного типа T2 , который может служить двунаправленным итератором постоянной двунаправленной последовательности.

Пример

// cliext_set_const_iterator.cpp
// compile with: /clr
#include <cliext/set>

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

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

set::const_reference

Тип постоянной ссылки на элемент.

Синтаксис

typedef value_type% const_reference;

Замечания

Тип описывает константную ссылку на элемент.

Пример

// cliext_set_const_reference.cpp
// compile with: /clr
#include <cliext/set>

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

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

set::const_reverse_iterator

Тип постоянного обратного итератора для управляемой последовательности.

Синтаксис

typedef T4 const_reverse_iterator;

Замечания

Тип описывает объект неопределенного типа T4 , который может служить константным обратным итератором для управляемой последовательности.

Пример

// cliext_set_const_reverse_iterator.cpp
// compile with: /clr
#include <cliext/set>

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

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

set::count

Определяет количество элементов, соответствующих заданному ключу.

Синтаксис

size_type count(key_type key);

Параметры

key
Искомое значение ключа.

Замечания

Функция-член возвращает количество элементов в управляемой последовательности с эквивалентным порядком key. Он используется для определения количества элементов, которые в настоящее время находятся в управляемой последовательности, соответствующей указанному ключу.

Пример

// cliext_set_count.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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

set::difference_type

Типы подписанного расстояния между двумя элементами.

Синтаксис

typedef int difference_type;

Замечания

Тип описывает возможное отрицательное число элементов.

Пример

// cliext_set_difference_type.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset::difference_type diff = 0;
    for (Myset::iterator it = c1.begin(); it != c1.end(); ++it)
        ++diff;
    System::Console::WriteLine("end()-begin() = {0}", diff);

// compute negative difference
    diff = 0;
    for (Myset::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

set::empty

Проверяет отсутствие элементов.

Синтаксис

bool empty();

Замечания

Эта функция-член возвращает значение true для пустой управляемой последовательности. Это эквивалентно size() == 0. Он используется для проверки того, является ли он set пустым.

Пример

// cliext_set_empty.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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

set::end

Задает конец управляемой последовательности.

Синтаксис

iterator end();

Замечания

Функция-член возвращает двунаправленный итератор, указывающий непосредственно за пределами управляемой последовательности. Он используется для получения итератора, который обозначает конец управляемой последовательности; его состояние не изменяется, если длина управляемой последовательности изменяется.

Пример

// cliext_set_end.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset::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

set::equal_range

Находит диапазон, соответствующий указанному ключу.

Синтаксис

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

Параметры

key
Искомое значение ключа.

Замечания

Функция-член возвращает пару итераторов cliext::pair<iterator, iterator>(lower_bound(key), upper_bound(key)). Он используется для определения диапазона элементов, которые в настоящее время находятся в управляемой последовательности, соответствующей указанному ключу.

Пример

// cliext_set_equal_range.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
typedef Myset::pair_iter_iter Pairii;
int main()
    {
    Myset 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

set::erase

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

Синтаксис

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

Параметры

first
Начало диапазона для удаления.

key
Значение ключа для удаления.

last
Конец диапазона для удаления.

where
Элемент для удаления.

Замечания

Первая функция-член удаляет элемент управляемой последовательности, на которую указывает where, и возвращает итератор, указывающий первый элемент, оставшийся за пределами удаленного элемента, или end() если такой элемент отсутствует. Он используется для удаления одного элемента.

Вторая функция-член удаляет элементы управляемой последовательности в диапазоне [first, lastи возвращает итератор, указывающий первый элемент, оставшийся за пределами удаленных элементов, или end() если такой элемент отсутствует. Он используется для удаления нуля или нескольких смежных элементов.

Третья функция-член удаляет любой элемент управляемой последовательности, ключ которой имеет эквивалентное упорядочивание key, и возвращает количество удаленных элементов. Он используется для удаления и подсчета всех элементов, соответствующих указанному ключу.

Каждый элемент стирает время пропорционально логарифму числа элементов в управляемой последовательности.

Пример

// cliext_set_erase.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset::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

set::find

Определяет элемент, соответствующий указанному ключу.

Синтаксис

iterator find(key_type key);

Параметры

key
Искомое значение ключа.

Замечания

Если по крайней мере один элемент в управляемой последовательности имеет эквивалентное упорядочение, keyфункция-член возвращает итератор, указывающий один из этих элементов; в противном случае возвращается end(). Он используется для поиска элемента в управляемой последовательности, которая соответствует указанному ключу.

Пример

// cliext_set_find.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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

set::generic_container

Тип универсального интерфейса для контейнера.

Синтаксис

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

Замечания

Тип описывает универсальный интерфейс для этого класса контейнера шаблона.

Пример

// cliext_set_generic_container.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset::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

set::generic_iterator

Тип итератора для использования с универсальным интерфейсом для контейнера.

Синтаксис

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

Замечания

Тип описывает универсальный итератор, который можно использовать с универсальным интерфейсом для этого класса контейнеров шаблона.

Пример

// cliext_set_generic_iterator.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset::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
    Myset::generic_iterator gcit = gc1->begin();
    Myset::generic_value gcval = *gcit;
    System::Console::WriteLine("{0} ", gcval);
    return (0);
    }
a b c
a b c
a

set::generic_reverse_iterator

Тип обратного итератора для использования с универсальным интерфейсом для контейнера.

Синтаксис

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

Замечания

Тип описывает универсальный обратный итератор, который можно использовать с универсальным интерфейсом для этого класса контейнеров шаблона.

Пример

// cliext_set_generic_reverse_iterator.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset::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
    Myset::generic_reverse_iterator gcit = gc1->rbegin();
    Myset::generic_value gcval = *gcit;
    System::Console::WriteLine("{0} ", gcval);
    return (0);
    }
a b c
a b c
c

set::generic_value

Тип элемента для использования с универсальным интерфейсом для контейнера.

Синтаксис

typedef GValue generic_value;

Замечания

Тип описывает объект типа GValue , описывающий значение хранимого элемента для использования с универсальным интерфейсом для этого класса контейнера шаблона.

Пример

// cliext_set_generic_value.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset::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
    Myset::generic_iterator gcit = gc1->begin();
    Myset::generic_value gcval = *gcit;
    System::Console::WriteLine("{0} ", gcval);
    return (0);
    }
a b c
a b c
a

set::insert

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

Синтаксис

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);

Параметры

first
Начало диапазона для вставки.

last
Конец диапазона для вставки.

right
Перечисление для вставки.

val
Значение ключа для вставки.

where
Где в контейнере для вставки (только подсказка).

Замечания

Каждая из функций-членов вставляет последовательность, указанную оставшимися операндами.

Первая функция-член пытается вставить элемент со значением valи возвращает пару значений X. Если X.second задано значение true, X.first обозначает только что вставленный элемент; в противном случае X.first обозначает элемент с эквивалентным упорядочением, который уже существует, и новый элемент не вставляется. Он используется для вставки одного элемента.

Вторая функция-член вставляет элемент со значением val, используя where в качестве указания (для повышения производительности) и возвращает итератор, указывающий только что вставленный элемент. Вы используете его для вставки одного элемента, который может находиться рядом с элементом, который вы знаете.

Третья функция-член вставляет последовательность [first, last). Он используется для вставки нуля или нескольких элементов, скопированных из другой последовательности.

Четвертая функция-член вставляет последовательность, указанную параметром right. Он используется для вставки последовательности, описанной перечислителем.

Каждое вставка элемента занимает время пропорционально логарифму числа элементов в управляемой последовательности. Вставка может происходить в амортизированном времени константы, однако при указании, обозначаемом элементом рядом с точкой вставки.

Пример

// cliext_set_insert.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
typedef Myset::pair_iter_bool Pairib;
int main()
    {
    Myset 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
    Myset c2;
    Myset::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
    Myset 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

set::iterator

Тип итератора для управляемой последовательности.

Синтаксис

typedef T1 iterator;

Замечания

Тип описывает объект неопределенного типа T1 , который может служить двунаправленным итератором управляемой последовательности.

Пример

// cliext_set_iterator.cpp
// compile with: /clr
#include <cliext/set>

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

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

set::key_comp

Копирует делегат упорядочивания для двух ключей.

Синтаксис

key_compare^key_comp();

Замечания

Функция-член возвращает делегат упорядочивания, используемый для упорядочивания управляемой последовательности. Вы используете его для сравнения двух ключей.

Пример

// cliext_set_key_comp.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset c1;
    Myset::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
    Myset 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') = False
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

set::key_compare

Делегат упорядочивания для двух ключей.

Синтаксис

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

Замечания

Тип является синонимом делегата, который определяет порядок его ключевых аргументов.

Пример

// cliext_set_key_compare.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset c1;
    Myset::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
    Myset 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') = False
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

set::key_type

Тип ключа упорядочения.

Синтаксис

typedef Key key_type;

Замечания

Этот тип является синонимом для параметра шаблона Key.

Пример

// cliext_set_key_type.cpp
// compile with: /clr
#include <cliext/set>

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

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

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

set::lower_bound

Находит начало диапазона, соответствующего указанному ключу.

Синтаксис

iterator lower_bound(key_type key);

Параметры

key
Искомое значение ключа.

Замечания

Функция-член определяет первый элемент X в управляемой последовательности, которая имеет эквивалентное упорядочивание key. Если такой элемент не существует, возвращается end(); в противном случае возвращается итератор, указывающий X. Он используется для поиска начала последовательности элементов в настоящее время в управляемой последовательности, которая соответствует указанному ключу.

Пример

// cliext_set_lower_bound.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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

set::make_value

Создает объект value.

Синтаксис

static value_type make_value(key_type key);

Параметры

key
Значение ключа для использования.

Замечания

Функция-член возвращает value_type объект, ключ которого является key. Он используется для создания объекта, подходящего для использования с несколькими другими функциями-членами.

Пример

// cliext_set_make_value.cpp
// compile with: /clr
#include <cliext/set>

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

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

set::operator=

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

Синтаксис

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

Параметры

right
Контейнер для копирования.

Замечания

Оператор-член копирует right в объект, а затем возвращает *this. Он позволяет заменить управляемую последовательность копией управляемой последовательности в right.

Пример

// cliext_set_operator_as.cpp
// compile with: /clr
#include <cliext/set>

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

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

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

set::rbegin

Задает начало обратной управляемой последовательности.

Синтаксис

reverse_iterator rbegin();

Замечания

Функция-член возвращает обратный итератор, указывающий последний элемент управляемой последовательности или только за началом пустой последовательности. Следовательно, он обозначает beginning обратную последовательность. Он используется для получения итератора, обозначающего current начало управляемой последовательности, отображаемой в обратном порядке, но его состояние может измениться, если длина управляемой последовательности изменяется.

Пример

// cliext_set_rbegin.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset::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

set::reference

Тип ссылки на элемент.

Синтаксис

typedef value_type% reference;

Замечания

Тип описывает ссылку на элемент.

Пример

// cliext_set_reference.cpp
// compile with: /clr
#include <cliext/set>

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

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

set::rend

Задает конец обратной управляемой последовательности.

Синтаксис

reverse_iterator rend();

Замечания

Функция-член возвращает обратный итератор, указывающий только за начало управляемой последовательности. Следовательно, он обозначает end обратную последовательность. Он используется для получения итератора, который обозначает current конец управляемой последовательности, наблюдаемой в обратном порядке, но его состояние может измениться, если длина управляемой последовательности изменяется.

Пример

// cliext_set_rend.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset::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

set::reverse_iterator

Тип обратного итератора для управляемой последовательности.

Синтаксис

typedef T3 reverse_iterator;

Замечания

Тип описывает объект неопределенного типа T3 , который может служить обратным итератором для управляемой последовательности.

Пример

// cliext_set_reverse_iterator.cpp
// compile with: /clr
#include <cliext/set>

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

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

set::set

Создает объект контейнера.

Синтаксис

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

Параметры

first
Начало диапазона для вставки.

last
Конец диапазона для вставки.

pred
Упорядочение предиката для управляемой последовательности.

right
Объект или диапазон для вставки.

Замечания

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

set();

инициализирует контролируемую последовательность без элементов с предикатом key_compare()по умолчанию. Он используется для указания пустой управляемой последовательности по умолчанию с предикатом упорядочивания по умолчанию.

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

explicit set(key_compare^ pred);

инициализирует контролируемую последовательность без элементов с предикатом predупорядочения. Он используется для указания пустой управляемой последовательности с указанным предикатом упорядочения.

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

set(set<Key>% right);

инициализирует управляемую последовательность с помощью последовательности [right.begin(), right.end()с предикатом порядка по умолчанию. Он используется для указания начальной управляемой последовательности, которая является копией последовательности, управляемой set объектом right, с предикатом порядка по умолчанию.

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

set(set<Key>^ right);

инициализирует управляемую последовательность с помощью последовательности [right->begin(), right->end()с предикатом порядка по умолчанию. Он используется для указания начальной управляемой последовательности, которая является копией последовательности, управляемой set объектом right, с предикатом порядка по умолчанию.

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

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

инициализирует управляемую последовательность с помощью последовательности [first, lastс предикатом порядка по умолчанию. Он используется для создания управляемой последовательности копии другой последовательности с предикатом по умолчанию.

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

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

инициализирует контролируемую последовательность с помощью последовательности [first, last), с предикатом predупорядочения. Он используется для создания управляемой последовательности копией другой последовательности с указанным предикатом упорядочения.

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

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

инициализирует контролируемую последовательность с последовательностью, указанной перечислителем right, с предикатом порядка по умолчанию. Он используется для создания управляемой последовательности копии другой последовательности, описанной перечислителем, с предикатом по умолчанию.

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

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

инициализирует контролируемую последовательность с последовательностью, назначенной перечислителем right, с предикатом predупорядочения. Он используется для создания управляемой последовательности копии другой последовательности, описанной перечислителем, с указанным предикатом упорядочения.

Пример

// cliext_set_construct.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
// construct an empty container
    Myset 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
    Myset 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 iterator range
    Myset 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
    Myset 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 enumeration
    Myset 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
    Myset 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 from a generic container
    Myset c7(c4);
    for each (wchar_t elem in c7)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

// construct by copying another container
    Myset 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
c b a
a b c
c b a
a b c
c b a
c b a
a b c

set::size

Подсчитывает количество элементов.

Синтаксис

size_type size();

Замечания

Функция-член возвращает длину управляемой последовательности. Он используется для определения количества элементов в текущей управляемой последовательности. Если все, что вам нужно, заключается в том, имеет ли последовательность ненулевое значение, см empty(). раздел .

Пример

// cliext_set_size.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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

set::size_type

Тип расстояния со знаком между двумя элементами.

Синтаксис

typedef int size_type;

Замечания

Тип описывает число элементов, не являющихся отрицательными.

Пример

// cliext_set_size_type.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset::size_type diff = 0;
    for (Myset::iterator it = c1.begin(); it != c1.end(); ++it)
        ++diff;
    System::Console::WriteLine("end()-begin() = {0}", diff);
    return (0);
    }
a b c
end()-begin() = 3

set::swap

Меняет местами содержимое двух контейнеров.

Синтаксис

void swap(set<Key>% right);

Параметры

right
Контейнер для обмена содержимым.

Замечания

Функция-член меняет местами управляемые последовательности между this и right. Он делает это в постоянном времени, и он не вызывает исключений. Вы используете его в качестве быстрого способа обмена содержимым двух контейнеров.

Пример

// cliext_set_swap.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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
    Myset 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

set::to_array

Копирует контролируемую последовательность в новый массив.

Синтаксис

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

Замечания

Функция-член возвращает массив, содержащий контролируемую последовательность. Он используется для получения копии управляемой последовательности в форме массива.

Пример

// cliext_set_to_array.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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

set::upper_bound

Находит конец диапазона, соответствующий указанному ключу.

Синтаксис

iterator upper_bound(key_type key);

Параметры

key
Искомое значение ключа.

Замечания

Функция-член определяет последний элемент X в управляемой последовательности, которая имеет эквивалентное упорядочивание key. Если такой элемент отсутствует или X является последним элементом в управляемой последовательности, он возвращается end(); в противном случае возвращается итератор, указывающий первый элемент за пределами X. Он используется для поиска конца последовательности элементов в настоящее время в управляемой последовательности, которая соответствует указанному ключу.

Пример

// cliext_set_upper_bound.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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

set::value_comp

Копирует делегат упорядочивания для двух значений элементов.

Синтаксис

value_compare^ value_comp();

Замечания

Функция-член возвращает делегат упорядочивания, используемый для упорядочивания управляемой последовательности. Он используется для сравнения двух значений элементов.

Пример

// cliext_set_value_comp.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset c1;
    Myset::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') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False

set::value_compare

Делегат упорядочивания для двух значений элементов.

Синтаксис

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

Замечания

Тип является синонимом делегата, который определяет порядок его аргументов значений.

Пример

// cliext_set_value_compare.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset c1;
    Myset::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') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False

set::value_type

Тип элемента.

Синтаксис

typedef generic_value value_type;

Замечания

Тип является синонимом generic_value.

Пример

// cliext_set_value_type.cpp
// compile with: /clr
#include <cliext/set>

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

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

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

operator!= (set)

Список не равного сравнения.

Синтаксис

template<typename Key>
    bool operator!=(set<Key>% left,
        set<Key>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает .!(left == right) Он используется для проверки того left , не упорядочен right ли два набора по элементу.

Пример

// cliext_set_operator_ne.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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();

// assign to a new container
    Myset c2;
    c2.insert(L'a');
    c2.insert(L'b');
    c2.insert(L'd');

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

    System::Console::WriteLine("[a b c] != [a b c] is {0}",
        c1 != c1);
    System::Console::WriteLine("[a b c] != [a b d] is {0}",
        c1 != c2);
    return (0);
    }
a b c
a b d
[a b c] != [a b c] is False
[a b c] != [a b d] is True

operator< (set)

Список меньше сравнения.

Синтаксис

template<typename Key>
    bool operator<(set<Key>% left,
        set<Key>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает значение true, если для наименьшей позиции i , для которой !(right[i] < left[i]) она также имеет значение true left[i] < right[i]. В противном случае возвращается значение left->size() < right->size(). Он используется для проверки того, упорядочено right ли left два набора перед сравнением двух наборов по элементу.

Пример

// cliext_set_operator_lt.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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();

// assign to a new container
    Myset c2;
    c2.insert(L'a');
    c2.insert(L'b');
    c2.insert(L'd');

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

    System::Console::WriteLine("[a b c] < [a b c] is {0}",
        c1 < c1);
    System::Console::WriteLine("[a b c] < [a b d] is {0}",
        c1 < c2);
    return (0);
    }
a b c
a b d
[a b c] < [a b c] is False
[a b c] < [a b d] is True

operator<= (set)

Список меньше или равного сравнения.

Синтаксис

template<typename Key>
    bool operator<=(set<Key>% left,
        set<Key>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает .!(right < left) Вы используете его для проверки того, не упорядочено right ли left после сравнения двух наборов по элементу.

Пример

// cliext_set_operator_le.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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();

// assign to a new container
    Myset c2;
    c2.insert(L'a');
    c2.insert(L'b');
    c2.insert(L'd');

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

    System::Console::WriteLine("[a b c] <= [a b c] is {0}",
        c1 <= c1);
    System::Console::WriteLine("[a b d] <= [a b c] is {0}",
        c2 <= c1);
    return (0);
    }
a b c
a b d
[a b c] <= [a b c] is True
[a b d] <= [a b c] is False

operator== (set)

Список равных сравнений.

Синтаксис

template<typename Key>
    bool operator==(set<Key>% left,
        set<Key>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает значение true, только если последовательности, left контролируемые и имеют одинаковую длину и right для каждой позицииi. left[i] == right[i] Вы используете его для проверки того, упорядочено ли left то же, что right и при сравнении двух наборов по элементу.

Пример

// cliext_set_operator_eq.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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();

// assign to a new container
    Myset c2;
    c2.insert(L'a');
    c2.insert(L'b');
    c2.insert(L'd');

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

    System::Console::WriteLine("[a b c] == [a b c] is {0}",
        c1 == c1);
    System::Console::WriteLine("[a b c] == [a b d] is {0}",
        c1 == c2);
    return (0);
    }
a b c
a b d
[a b c] == [a b c] is True
[a b c] == [a b d] is False

operator> (set)

Список больше, чем сравнение.

Синтаксис

template<typename Key>
    bool operator>(set<Key>% left,
        set<Key>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает .right < left Он используется для проверки того, упорядочено right ли left после сравнения двух наборов по элементу.

Пример

// cliext_set_operator_gt.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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();

// assign to a new container
    Myset c2;
    c2.insert(L'a');
    c2.insert(L'b');
    c2.insert(L'd');

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

    System::Console::WriteLine("[a b c] > [a b c] is {0}",
        c1 > c1);
    System::Console::WriteLine("[a b d] > [a b c] is {0}",
        c2 > c1);
    return (0);
    }
a b c
a b d
[a b c] > [a b c] is False
[a b d] > [a b c] is True

operator>= (set)

Список больше или равного сравнения.

Синтаксис

template<typename Key>
    bool operator>=(set<Key>% left,
        set<Key>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает .!(left < right) Вы используете его для проверки того, не упорядочено ли left два набора перед right сравнением элементов по элементу.

Пример

// cliext_set_operator_ge.cpp
// compile with: /clr
#include <cliext/set>

typedef cliext::set<wchar_t> Myset;
int main()
    {
    Myset 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();

// assign to a new container
    Myset c2;
    c2.insert(L'a');
    c2.insert(L'b');
    c2.insert(L'd');

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

    System::Console::WriteLine("[a b c] >= [a b c] is {0}",
        c1 >= c1);
    System::Console::WriteLine("[a b c] >= [a b d] is {0}",
        c1 >= c2);
    return (0);
    }
a b c
a b d
[a b c] >= [a b c] is True
[a b c] >= [a b d] is False