Namespaces
Variants

std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>:: flat_multimap

From cppreference.net

flat_multimap ( )
: flat_multimap ( key_compare ( ) ) { }
(1) (начиная с C++23)
template < class Allocator >
flat_multimap ( const flat_multimap & , const Allocator & alloc ) ;
(2) (начиная с C++23)
template < class Allocator >
flat_multimap ( flat_multimap && , const Allocator & alloc ) ;
(3) (начиная с C++23)
flat_multimap ( key_container_type key_cont, mapped_container_type mapped_cont,
const key_compare & comp = key_compare ( ) ) ;
(4) (начиная с C++23)
template < class Allocator >

flat_multimap ( const key_container_type & key_cont,
const mapped_container_type & mapped_cont,

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

flat_multimap ( const key_container_type & key_cont,
const mapped_container_type & mapped_cont,

const key_compare & comp, const Allocator & alloc ) ;
(6) (начиная с C++23)
flat_multimap ( std:: sorted_equivalent_t , key_container_type key_cont,

mapped_container_type mapped_cont,

const key_compare & comp = key_compare ( ) ) ;
(7) (since C++23)
template < class Allocator >

flat_multimap ( std:: sorted_equivalent_t , const key_container_type & key_cont,

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

flat_multimap ( std:: sorted_equivalent_t , const key_container_type & key_cont,
const mapped_container_type & mapped_cont,

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

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

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

flat_multimap ( InputIter first, InputIter last,

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

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

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

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

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

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

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

flat_multimap ( std:: sorted_equivalent_t s, InputIter first, InputIter last,
const key_compare & comp = key_compare ( ) )

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

flat_multimap ( 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_multimap ( std:: sorted_equivalent_t s, InputIter first, InputIter last,

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

const key_compare & comp = key_compare ( ) )

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

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

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

const key_compare & comp = key_compare ( ) )

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

flat_multimap ( 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_multimap ( std:: sorted_equivalent_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) A move constructor . Создает адаптер контейнера с содержимым other используя семантику перемещения. Смотрите примечание об использовании аллокатора ниже.
4) Сначала инициализирует c.keys с помощью std :: move ( key_cont ) , c.values с помощью std :: move ( mapped_cont ) , и compare с помощью comp . Затем сортирует базовый диапазон [ begin ( ) , end ( ) ) относительно value_comp() .
5) То же, что и (4) , эквивалентно flat_multimap ( key_cont, mapped_cont ) ; . Смотрите примечание об использовании аллокатора ниже.
6) То же, что и (4) , эквивалентно flat_multimap ( key_cont, mapped_cont, comp ) ; . Смотрите примечание об использовании аллокатора ниже.
7) Инициализирует c.keys с помощью std :: move ( key_cont ) , c.values с помощью std :: move ( mapped_cont ) , и compare с помощью comp .
8) То же, что и (7) , эквивалентно flat_multimap ( s, key_cont, mapped_cont ) ; . Смотрите примечание об использовании аллокатора ниже.
9) То же, что и (7) , эквивалентно flat_multimap ( s, key_cont, mapped_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) , но используется как делегирующий конструктор .
18,19) То же, что и (16) . Смотрите примечание об использовании аллокатора ниже.
20) Конструирует базовые контейнеры с содержимым диапазона [ first , last ) как если бы с помощью insert ( first, last ) .
21,22) То же, что и (20) . См. примечание об использовании аллокатора ниже.
23) Конструктор со списком инициализации . Создает базовый контейнер с содержимым списка инициализации init , используя (13) в качестве делегирующего конструктора .
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.keys и c.values создаются с помощью uses-allocator construction . Эти перегрузки участвуют в разрешении перегрузки только если std:: uses_allocator_v < container_type, Allocator > равно true .

Параметры

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

Сложность

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

Исключения

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

Примечания

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

Пример

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

присваивает значения адаптеру контейнера
(public member function)