Namespaces
Variants

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

From cppreference.net

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

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

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

const key_compare & comp = key_compare ( ) )

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

flat_multiset ( std:: sorted_equivalent_t s, const container_type & cont,

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

flat_multiset ( std:: sorted_equivalent_t s, const container_type & cont,

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

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

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

flat_multiset ( InputIter first, InputIter last,

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

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

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

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

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

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

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

flat_multiset ( std:: sorted_equivalent_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_multiset ( std:: sorted_equivalent_t s, InputIter first, InputIter last,

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

flat_multiset ( std:: sorted_equivalent_t s, InputIter first, InputIter last,

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

const key_compare & comp = key_compare ( ) )

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

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

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

const key_compare & comp = key_compare ( ) )

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

flat_multiset ( std:: sorted_equivalent_t s, std:: initializer_list < value_type > init,

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

flat_multiset ( std:: sorted_equivalent_t s, std:: initializer_list < value_type > init,

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

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

1) Конструктор по умолчанию. Создает пустой адаптер контейнера.
2) A copy constructor . Конструирует c с копией содержимого other. c и compare с other. compare . Смотрите allocator usage note ниже.
3) Конструктор перемещения. Создает адаптер контейнера с содержимым other с использованием семантики перемещения. Смотрите примечание об использовании аллокатора ниже.
4) Создает базовый контейнер с содержимым контейнера cont . Сначала инициализирует c с помощью std :: move ( cont ) и compare с помощью comp . Затем сортирует c относительно comp .
5) То же, что и (4) , эквивалентно flat_multiset ( cont ) ; . Смотрите примечание об использовании аллокатора ниже.
6) То же, что и (4) , эквивалентно flat_multiset ( cont, comp ) ; . Смотрите примечание об использовании аллокатора ниже.
7) Создает базовый контейнер с содержимым другого контейнера cont . Инициализирует c с помощью std :: move ( cont ) и compare с помощью comp .
8) То же, что и (7) , эквивалентно flat_multiset ( s, cont ) ; . Смотрите примечание об использовании аллокатора ниже.
9) То же, что и (7) , эквивалентно flat_multiset ( 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) Конструктор со initializer-list . Создает базовый контейнер с содержимым списка инициализации init , используя (13) в качестве delegating constructor .
24,25) То же, что и (23) . См. примечание об использовании аллокатора ниже.
26) Конструктор со списком инициализации . Создает базовый контейнер с содержимым списка инициализации init , используя (20) в качестве делегирующего конструктора .
27,28) Сохранить как (26) . См. примечание об использовании аллокатора ниже.

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

Содержание

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

Конструкторы (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_multiset , используемый в качестве источника для инициализации элементов базового контейнера
alloc - аллокатор, используемый для всех выделений памяти базового контейнера
comp - функциональный объект, используемый для всех сравнений ключей
first, last - пара итераторов, определяющая исходный диапазон элементов для копирования
init - список инициализации для инициализации элементов базового контейнера
rg - диапазон, совместимый с контейнером (container compatible range) (то есть input_range , элементы которого конвертируются в value_type ), используемый в качестве источника для инициализации базового контейнера
fr - тег устранения неоднозначности (disambiguation tag) , указывающий, что содержащийся член должен быть сконструирован из диапазона
s - тег устранения неоднозначности (disambiguation tag) , указывающий, что входная последовательность отсортирована относительно compare
Требования к типам
-
InputIt должен удовлетворять требованиям LegacyInputIterator .
-
Compare должен удовлетворять требованиям Compare .
-
Allocator должен удовлетворять требованиям Allocator .

Сложность

1) Константа.
2) Линейно по размеру other .
3) Аналогично соответствующему конструктору перемещения обернутого контейнера, т.е. константная или линейная по размеру 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 .

Пример

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

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