Namespaces
Variants

std::flat_set<Key,Compare,KeyContainer>:: flat_set

From cppreference.net

(Примечание: В данном фрагменте HTML отсутствует текстовое содержимое для перевода - присутствуют только HTML-теги и атрибуты, которые согласно инструкциям не подлежат переводу)
flat_set ( )
: flat_set ( key_compare ( ) ) { }
(1) (начиная с C++23)
template < class Allocator >
flat_set ( const flat_set & other, const Allocator > alloc ) ;
(2) (начиная с C++23)
template < class Allocator >
flat_set ( flat_set && other, const Allocator & alloc ) ;
(3) (начиная с C++23)
explicit flat_set ( container_type cont,
const key_compare & comp = key_compare ( ) ) ;
(4) (начиная с C++23)
template < class Allocator >
flat_set ( const container_type & cont, const Allocator & alloc ) ;
(5) (начиная с C++23)
template < class Allocator >

flat_set ( const container_type & cont, const key_compare & comp,

const Allocator & alloc ) ;
(6) (начиная с C++23)
flat_set ( std:: sorted_unique_t s, container_type cont,

const key_compare & comp = key_compare ( ) )

: c ( std :: move ( cont ) ) , compare ( comp ) { }
(7) (начиная с C++23)
template < class Allocator >

flat_set ( std:: sorted_unique_t s, const container_type & cont,

const Allocator & alloc ) ;
(8) (начиная с C++23)
template < class Allocator >

flat_set ( std:: sorted_unique_t s, const container_type & cont,

const key_compare & comp, const Allocator & alloc ) ;
(9) (начиная с C++23)
explicit flat_set ( const key_compare & comp )
: c ( ) , compare ( comp ) { }
(10) (начиная с C++23)
template < class Allocator >
flat_set ( const key_compare & comp, const Allocator & alloc ) ;
(11) (начиная с C++23)
template < class Allocator >
explicit flat_set ( const Allocator & alloc ) ;
(12) (начиная с C++23)
template < class InputIter >

flat_set ( InputIter first, InputIter last,
const key_compare & comp = key_compare ( ) )

: c ( ) , compare ( comp ) ;
(13) (начиная с C++23)
template < class InputIter, class Allocator >

flat_set ( InputIter first, InputIter last,

const key_compare & comp, const Allocator & alloc ) ;
(14) (начиная с C++23)
template < class InputIter, class Allocator >
flat_set ( InputIter first, InputIter last, const Allocator & alloc ) ;
(15) (начиная с C++23)
template < container-compatible-range < value_type > R >

flat_set ( std:: from_range_t , R && rg, const key_compare & comp )

: flat_set ( comp ) ;
(16) (начиная с C++23)
template < container-compatible-range < value_type > R >

flat_set ( std:: from_range_t fr, R && rg )

: flat_set ( fr, std:: forward < R > ( rg ) , key_compare ( ) ) { }
(17) (начиная с C++23)
template < container-compatible-range < value_type > R, class Allocator >
flat_set ( std:: from_range_t , R && rg, const Allocator & alloc ) ;
(18) (начиная с C++23)
template < container-compatible-range < value_type > R, class Allocator >

flat_set ( std:: from_range_t , R && rg, const key_compare & comp,

const Allocator & alloc ) ;
(19) (начиная с C++23)
template < class InputIter >

flat_set ( std:: sorted_unique_t s, InputIter first, InputIter last,
const key_compare & comp = key_compare ( ) )

: c ( first, last ) , compare ( comp ) { }
(20) (начиная с C++23)
template < class InputIter, class Allocator >

flat_set ( std:: sorted_unique_t s, InputIter first, InputIter last,

const key_compare & comp, const Allocator & alloc ) ;
(21) (начиная с C++23)
template < class InputIter, class Allocator >

flat_set ( std:: sorted_unique_t s, InputIter first, InputIter last,

const Allocator & alloc ) ;
(22) (начиная с C++23)
flat_set ( std:: initializer_list < value_type > init,

const key_compare & comp = key_compare ( ) )

: flat_set ( init. begin ( ) , init. end ( ) , comp ) { }
(23) (начиная с C++23)
template < class Allocator >

flat_set ( std:: initializer_list < value_type > init, const key_compare & comp,

const Allocator & alloc ) ;
(24) (начиная с C++23)
template < class Allocator >
flat_set ( std:: initializer_list < value_type > init, const Allocator & alloc ) ;
(25) (начиная с C++23)
flat_set ( std:: sorted_unique_t s, std:: initializer_list < value_type > init,

const key_compare & comp = key_compare ( ) )

: flat_set ( s, init. begin ( ) , init. end ( ) , comp ) { }
(26) (начиная с C++23)
template < class Allocator >

flat_set ( std:: sorted_unique_t s, std:: initializer_list < value_type > init,

const key_compare & comp, const Allocator & alloc ) ;
(27) (начиная с C++23)
template < class Allocator >

flat_set ( std:: sorted_unique_t s, std:: initializer_list < value_type > init,

const Allocator & alloc ) ;
(28) (начиная с C++23)

Создает новый адаптер контейнера из различных источников данных и опционально предоставленного функционального объекта сравнения comp и/или аллокатора alloc .

1) Конструктор по умолчанию. Создает пустой адаптер контейнера.
2) A copy constructor . Constructs c with the copy of the contents of other. c and compare with other. compare . See allocator usage note below.
3) Конструктор перемещения. Создает адаптер контейнера с содержимым other с использованием семантики перемещения. Смотрите примечание об использовании аллокатора ниже.
4) Создает базовый контейнер с содержимым контейнера cont . Сначала инициализирует c с помощью std :: move ( cont ) и compare с помощью comp . Затем сортирует c относительно comp . Наконец, делает элементы уникальными, т.е. удаляет все, кроме первого элемента из каждой группы последовательных эквивалентных элементов.
5) То же, что и (4) , эквивалентно flat_set ( cont ) ; . Смотрите примечание об использовании аллокатора ниже.
6) То же, что и (4) , эквивалентно flat_set ( cont, comp ) ; . Смотрите примечание об использовании аллокатора ниже.
7) Создает базовый контейнер с содержимым другого контейнера cont . Инициализирует c с помощью std :: move ( cont ) и compare с помощью comp .
8) То же, что и (7) , эквивалентно flat_set ( s, cont ) ; . Смотрите примечание об использовании аллокатора ниже.
9) То же, что и (7) , эквивалентно flat_set ( s, cont, comp ) ; . Смотрите примечание об использовании аллокатора ниже.
10) Создает пустой адаптер контейнера.
11,12) Создает пустой адаптер контейнера. См. примечание об использовании аллокатора ниже.
13) Конструирует адаптер контейнера с содержимым диапазона [ first , last ) , эквивалентно insert ( first, last ) ; .
14,15) То же, что и (13) . Смотрите примечание об использовании аллокатора ниже.
16) Конструирует адаптер контейнера с содержимым диапазона rg . Сначала использует (10) как делегирующий конструктор . Затем инициализирует c содержимым rg как если бы с помощью insert_range ( std:: forward < R > ( rg ) ) ; .
17) То же, что и (16) , но используется как delegating constructor .
18,19) То же, что и (16) . Смотрите примечание об использовании аллокатора ниже.
20) Конструирует базовый контейнер с содержимым диапазона [ first , last ) . Инициализирует c значением c ( first, last ) и compare значением compare ( comp ) .
21,22) То же, что и (20) . Смотрите примечание об использовании аллокатора ниже.
23) Конструктор со списком инициализации . Создает базовый контейнер с содержимым списка инициализации init , используя (13) в качестве делегирующего конструктора .
24,25) То же, что и (23) . Смотрите примечание об использовании аллокатора ниже.
26) Конструктор со списком инициализации . Создает базовый контейнер с содержимым списка инициализации init , используя (20) в качестве делегирующего конструктора .
27,28) Сохранить как (26) . См. примечание об использовании аллокатора ниже.

Примечание для перегрузок (13-15,20-22) : Если [ first , last ) не является допустимым диапазоном , поведение не определено.

Note for overloads (4-6,13-19,23-25) : If multiple elements in the range have keys that compare equivalent, it is unspecified which element is inserted (pending LWG2844 ).

Содержание

Примечание по использованию аллокатора

Конструкторы (2,3,5,6,8,9,11,12,14,15,17,19,21,22,24,25,27,28) эквивалентны соответствующим конструкторам без аллокатора, за исключением того, что c конструируется с помощью uses-allocator construction . Эти перегрузки участвуют в разрешении перегрузки только если std:: uses_allocator_v < container_type, Allocator > равно true .

Параметры

cont - контейнер, используемый в качестве источника для инициализации базового контейнера
other - другой flat_set , используемый в качестве источника для инициализации элементов базового контейнера
alloc - аллокатор, используемый для всех выделений памяти базового контейнера
comp - функциональный объект, используемый для всех сравнений ключей
first, last - пара итераторов, определяющая исходный диапазон элементов для копирования
init - список инициализации для инициализации элементов базового контейнера
rg - совместимый с контейнером диапазон (то есть input_range , элементы которого конвертируются в value_type ), используемый в качестве источника для инициализации базового контейнера
fr - тег устранения неоднозначности , указывающий, что содержащийся член должен быть сконструирован из диапазона
s - тег устранения неоднозначности , указывающий, что входная последовательность отсортирована относительно compare и все её элементы уникальны
Требования к типам
-
InputIt должен удовлетворять требованиям LegacyInputIterator .
-
Compare должен удовлетворять требованиям Compare .
-
Allocator должен удовлетворять требованиям Allocator .

Сложность

1) Константа.
2) Линейно по размеру other .
3) То же, что и соответствующий move-конструктор обернутого контейнера, т.е. константная или линейная по размеру cont .
4-6) Линейная от N если cont отсортирован относительно compare , иначе 𝓞(N·log(N)) , где N является значением cont. size ( ) до этого вызова.
7-9) То же, что и соответствующий конструктор перемещения обернутого контейнера, т.е. константная или линейная по размеру cont .
10-12) Константа.
13-15) Линейная от N если входной диапазон [ first , last ) отсортирован относительно compare , иначе 𝓞(N·log(N)) , где N равно значению cont. size ( ) до этого вызова.
16-19) Линейная по N если входной диапазон rg отсортирован относительно compare , иначе 𝓞(N·log(N)) , где N является значением cont. size ( ) до этого вызова.
20-22) Линейно по размеру [ first , last ) .
23-25) Линейная от N если элементы init отсортированы относительно compare , иначе 𝓞(N·log(N)) , где N является значением cont. size ( ) до этого вызова.
26-28) Линейно по размеру init .

Исключения

Вызовы Allocator::allocate могут генерировать исключения.

Примечания

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

Пример

Смотрите также

присваивает значения адаптеру контейнера
(публичная функция-член)