Поделиться через


set::set

Создает набор, пусты, или скопировать все или часть другого набора.

set( );
explicit set(
    const Traits& Comp
);
set(
    const Traits& Comp,
    const Allocator& Al
);
set(
    const set& Right
);
set(
    set&& Right
);
set(
    initializer_list<Type> IList
);
set(
    initializer_list<Type> IList,
    const Compare& Comp
);
set(
    initializer_list<Type> IList,
    const Compare& Comp, 
    const Allocator& Al
);

template<class InputIterator>
    set(
        InputIterator First,
        InputIterator Last
    );
template<class InputIterator>
    set(
        InputIterator First,
        InputIterator Last,
        const Traits& Comp
    );
template<class InputIterator>
    set(
        InputIterator First,
        InputIterator Last,
        const Traits& Comp,
        const Allocator& Al
    );

Параметры

Параметр

Описание

Al

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

Comp

Функция сравнения типа const Traits используется для упорядочивания элементов в наборе, устанавливается значение по умолчанию Compare.

Rght

Набор, построенный набор быть копией.

First

Положение первого элемента в диапазоне элементов для копирования.

Last

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

IList

Initializer_list, из которого для копирования элементов.

Заметки

Все конструкторы сохраняют тип объекта распределителя, который управляет хранилище памяти для набора, который может быть возвращено с помощью метода get_allocator. Параметр распределителя часто опускается в объявлении класса и макросах предварительной обработки, чтобы заменить альтернативные распределителей.

Все конструкторы инициализируют их наборы.

Все конструкторы сохраняют объект функции типа Признаки, который используется для задания порядка между набора ключей, который может быть возвращено с помощью метода key_comp.

Первые 3 конструктора определяют пустой начальный набор, второе задание типа функции сравнения (comp), используемый в параметре порядок элементов и третий явно определяет тип распределителя (al) необходимо использовать. Ключевое слово explicit подавляет некоторые типы автоматического преобразования типов.

Задает четвертый конструктор копии набора right.

Следующие 3 initializer_list конструктора используются для указания элементов.

Следующие 3 конструктора копируют диапазон [first, last) набора с увеличением эксплицитности в определение типа функции сравнения класса Признаки и Allocator.

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

Пример

// set_set.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main()
{
    using namespace std;

    // Create an empty set s0 of key type integer
    set <int> s0;

    // Create an empty set s1 with the key comparison
    // function of less than, then insert 4 elements
    set <int, less<int> > s1;
    s1.insert(10);
    s1.insert(20);
    s1.insert(30);
    s1.insert(40);

    // Create an empty set s2 with the key comparison
    // function of less than, then insert 2 elements
    set <int, less<int> > s2;
    s2.insert(10);
    s2.insert(20);

    // Create a set s3 with the 
    // allocator of set s1
    set <int>::allocator_type s1_Alloc;
    s1_Alloc = s1.get_allocator();
    set <int> s3(less<int>(), s1_Alloc);
    s3.insert(30);

    // Create a copy, set s4, of set s1
    set <int> s4(s1);

    // Create a set s5 by copying the range s1[_First, _Last)
    set <int>::const_iterator s1_bcIter, s1_ecIter;
    s1_bcIter = s1.begin();
    s1_ecIter = s1.begin();
    s1_ecIter++;
    s1_ecIter++;
    set <int> s5(s1_bcIter, s1_ecIter);

    // Create a set s6 by copying the range s4[_First, _Last)
    // and with the allocator of set s2
    set <int>::allocator_type s2_Alloc;
    s2_Alloc = s2.get_allocator();
    set <int> s6(s4.begin(), ++s4.begin(), less<int>(), s2_Alloc);

    cout << "s1 =";
    for (auto i : s1)
        cout << " " << i;
    cout << endl;

    cout << "s2 = " << *s2.begin() << " " << *++s2.begin() << endl;

    cout << "s3 =";
    for (auto i : s3)
        cout << " " << i;
    cout << endl;

    cout << "s4 =";
    for (auto i : s4)
        cout << " " << i;
    cout << endl;

    cout << "s5 =";
    for (auto i : s5)
        cout << " " << i;
    cout << endl;

    cout << "s6 =";
    for (auto i : s6)
        cout << " " << i;
    cout << endl;

    // Create a set by moving s5
    set<int> s7(move(s5));
    cout << "s7 =";
    for (auto i : s7)
        cout << " " << i;
    cout << endl;

    // Create a set with an initializer_list
    cout << "s8 =";
    set<int> s8{ { 1, 2, 3, 4 } };
    for (auto i : s8)
        cout << " " << i;
    cout << endl;

    cout << "s9 =";
    set<int> s9{ { 5, 6, 7, 8 }, less<int>() };
    for (auto i : s9)
        cout << " " << i;
    cout << endl;

    cout << "s10 =";
    set<int> s10{ { 10, 20, 30, 40 }, less<int>(), s9.get_allocator() };
    for (auto i : s10)
        cout << " " << i;
    cout << endl;
}
  

Требования

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

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

См. также

Ссылки

Класс set

Библиотека стандартных шаблонов