◐ Shell
clean mode source ↗

std::set::set — cppreference.com

Материал из cppreference.com

<metanoindex/>

<tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody>

(1)

explicit set( const Compare& comp = Compare(), {{#pad:|12}} const Allocator& alloc = Allocator() );

(до C++14)

set() : set( Compare() ) {} explicit set( const Compare& comp, {{#pad:|12}} const Allocator& alloc = Allocator() );

(начиная с C++14)

explicit set( const Allocator& alloc );

(1) (начиная с C++11)
(2)

template< class InputIterator > set( InputIterator first, InputIterator last, {{#pad:|3}} const Compare& comp = Compare(), {{#pad:|3}} const Allocator& alloc = Allocator() );

template< class InputIterator > set( InputIterator first, InputIterator last, {{#pad:|3}} const Allocator& alloc );

(начиная с C++14)

set( const set& other );

(3)

set( const set& other, const Allocator& alloc );

(3) (начиная с C++11)

set( set&& other );

(4) (начиная с C++11)

set( set&& other, const Allocator& alloc );

(4) (начиная с C++11)
(5)

set( std::initializer_list<value_type> init, {{#pad:|3}} const Compare& comp = Compare(), {{#pad:|3}} const Allocator& alloc = Allocator() );

(начиная с C++11)

set( std::initializer_list<value_type> init, {{#pad:|3}} const Allocator& );

(начиная с C++14)

Создаёт новый контейнер из разнообразных источников данных и (опционально) использует пользовательский аллокатор alloc или функцию для сравнения элементов comp.

1)

Конструктор по умолчанию. Создаёт пустой контейнер.

Оригинал:

default constructor. Constructs empty container.

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

2)

Создаёт контейнер с содержимым из диапазона [first, last).

Оригинал:

constructs the container with the contents of the range [first, last).

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

3)

Конструктор копирования. Создает контейнер с копией содержимого other. Если alloc не был предоставлен, то вместо него будет использован результат вызова функции std::allocator_traits<allocator_type>::select_on_container_copy_construction(other.get_allocator()).

Оригинал:

copy constructor. Constructs the container with the copy of the contents of other. If alloc is not provided, allocator is obtained by calling std::allocator_traits<allocator_type>::select_on_copy_construction(other).

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

4)

Move-конструктор. Создает контейнер с содержимым other с использованием move-семантики. Если alloc не был предоставлен, то он будет получен с помощью move-конструктора от аллокатора принадлежащего other.

Оригинал:

move constructor. Constructs the container with the contents of other using move semantics. If alloc is not provided, allocator is obtained by move-construction from the allocator belonging to other.

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

5)

Создает контейнер с содержимым списка инициализации init.

Оригинал:

constructs the container with the contents of the initializer list init.

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Параметры

alloc

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

Оригинал:

allocator to use for all memory allocations of this container

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

comp функция для сравнения ключей контейнера
first, last

диапазон из которого будут скопированы элементы

Оригинал:

the range to copy the elements from

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

other

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

Оригинал:

another container to be used as source to initialize the elements of the container with

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

init

список инициализации элементов контейнера

Оригинал:

initializer list to initialize the elements of the container with

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Требования к типам
-InputIt должен соответствовать требованиям InputIterator.

Сложность

1)

Постоянная

Оригинал:

constant

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

2) N log(N), где N = std::distance(first, last) в целом, линейная относительно N если исходные данные были отсортированы относительно value_comp().

3)

Линейная относительно размера other

Оригинал:

linear in size of other

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

4)

Постоянная. Если alloc был предоставлен и alloc != other.get_allocator(), то линейная.

Оригинал:

constant. If alloc is given and alloc != other.get_allocator(), then linear.

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

5) N log(N), где N = init.size()) в целом, линейная относительно N если init был отсортирован относительно value_comp().

Замечания

После создания перемещением контейнера (перегрузка (4)), ссылки, указатели и итераторы (кроме конечного итератора) на other остаются действительными, но ссылаются на элементы которые сейчас находятся в *this. Текущий стандарт делает эту гарантию с помощью общего заявления в [container.reqmts]/67, и более прямая гарантия находится на рассмотрении через LWG проблема 2321.

Пример

См. также