std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>:: flat_map
|
flat_map
(
)
: flat_map ( key_compare ( ) ) { } |
(1) | (начиная с C++23) |
|
template
<
class
Allocator
>
flat_map ( const flat_map & , const Allocator & alloc ) ; |
(2) | (начиная с C++23) |
|
template
<
class
Allocator
>
flat_map ( flat_map && , const Allocator & alloc ) ; |
(3) | (начиная с C++23) |
|
flat_map
(
key_container_type key_cont, mapped_container_type mapped_cont,
const key_compare & comp = key_compare ( ) ) ; |
(4) | (начиная с C++23) |
|
template
<
class
Allocator
>
flat_map
(
const
key_container_type
&
key_cont,
|
(5) | (начиная с C++23) |
|
template
<
class
Allocator
>
flat_map
(
const
key_container_type
&
key_cont,
|
(6) | (начиная с C++23) |
|
flat_map
(
std::
sorted_unique_t
, key_container_type key_cont,
mapped_container_type mapped_cont,
|
(7) | (начиная с C++23) |
|
template
<
class
Allocator
>
flat_map
(
std::
sorted_unique_t
,
const
key_container_type
&
key_cont,
|
(8) | (начиная с C++23) |
|
template
<
class
Allocator
>
flat_map
(
std::
sorted_unique_t
,
const
key_container_type
&
key_cont,
|
(9) | (начиная с C++23) |
|
explicit
flat_map
(
const
key_compare
&
comp
)
: c ( ) , compare ( comp ) { } |
(10) | (начиная с C++23) |
|
template
<
class
Allocator
>
flat_map ( const key_compare & comp, const Allocator & alloc ) ; |
(11) | (начиная с C++23) |
|
template
<
class
Allocator
>
explicit flat_map ( const Allocator & alloc ) ; |
(12) | (начиная с C++23) |
|
template
<
class
InputIter
>
flat_map
(
InputIter first, InputIter last,
|
(13) | (начиная с C++23) |
|
template
<
class
InputIter,
class
Allocator
>
flat_map
(
InputIter first, InputIter last,
|
(14) | (начиная с C++23) |
|
template
<
class
InputIter,
class
Allocator
>
flat_map ( InputIter first, InputIter last, const Allocator & alloc ) ; |
(15) | (начиная с C++23) |
|
template
<
container-compatible-range
<
value_type
>
R
>
flat_map
(
std::
from_range_t
, R
&&
rg,
const
key_compare
&
comp
)
|
(16) | (начиная с C++23) |
|
template
<
container-compatible-range
<
value_type
>
R
>
flat_map
(
std::
from_range_t
fr, R
&&
rg
)
|
(17) | (начиная с C++23) |
|
template
<
container-compatible-range
<
value_type
>
R,
class
Allocator
>
flat_map ( std:: from_range_t , R && rg, const Allocator & alloc ) ; |
(18) | (начиная с C++23) |
|
template
<
container-compatible-range
<
value_type
>
R,
class
Allocator
>
flat_map
(
std::
from_range_t
, R
&&
rg,
const
key_compare
&
comp,
|
(19) | (начиная с C++23) |
|
template
<
class
InputIter
>
flat_map
(
std::
sorted_unique_t
s, InputIter first, InputIter last,
|
(20) | (начиная с C++23) |
|
template
<
class
InputIter,
class
Allocator
>
flat_map
(
std::
sorted_unique_t
s, InputIter first, InputIter last,
|
(21) | (начиная с C++23) |
|
template
<
class
InputIter,
class
Allocator
>
flat_map
(
std::
sorted_unique_t
s, InputIter first, InputIter last,
|
(22) | (начиная с C++23) |
|
flat_map
(
std::
initializer_list
<
value_type
>
init,
const
key_compare
&
comp
=
key_compare
(
)
)
|
(23) | (начиная с C++23) |
|
template
<
class
Allocator
>
flat_map
(
std::
initializer_list
<
value_type
>
init,
const
key_compare
&
comp,
|
(24) | (начиная с C++23) |
|
template
<
class
Allocator
>
flat_map ( std:: initializer_list < value_type > init, const Allocator & alloc ) ; |
(25) | (начиная с C++23) |
|
flat_map
(
std::
sorted_unique_t
s,
std::
initializer_list
<
value_type
>
init,
const
key_compare
&
comp
=
key_compare
(
)
)
|
(26) | (начиная с C++23) |
|
template
<
class
Allocator
>
flat_map
(
std::
sorted_unique_t
s,
std::
initializer_list
<
value_type
>
init,
|
(27) | (начиная с C++23) |
|
template
<
class
Allocator
>
flat_map
(
std::
sorted_unique_t
s,
std::
initializer_list
<
value_type
>
init,
|
(28) | (начиная с C++23) |
Создает новый адаптер контейнера из различных источников данных и, опционально, используя предоставленный пользователем функциональный объект сравнения comp и/или аллокатор alloc .
c
с копией содержимого
other.
c
и
compare
с
other.
compare
.
Смотрите
примечание об использовании аллокатора
ниже.
c.keys
с помощью
std
::
move
(
key_cont
)
,
c.values
с помощью
std
::
move
(
mapped_cont
)
, и
compare
с помощью
comp
. Затем сортирует базовый диапазон
[
begin
(
)
,
end
(
)
)
относительно
value_comp()
. Наконец, удаляет дублирующиеся элементы, как если бы:
auto zv = views:: zip ( c. keys , c. values ) ;
auto it = ranges:: unique ( zv, key_equiv ( compare ) ) . begin ( ) ;
auto dist = distance ( zv. begin ( ) , it ) ;
c. keys . erase ( c. keys . begin ( ) + dist, c. keys . end ( ) ) ;
c. values . erase ( c. values . begin ( ) + dist, c. values . end ( ) ) ; .
c.keys
с помощью
std
::
move
(
key_cont
)
,
c.values
с помощью
std
::
move
(
mapped_cont
)
, и
compare
с помощью
comp
.
[
first
,
last
)
, эквивалентно
insert
(
first, last
)
;
.
c
содержимым
rg
как если бы с помощью
insert_range
(
std::
forward
<
R
>
(
rg
)
)
;
.
[
first
,
last
)
как если бы с помощью
insert
(
first, last
)
.
Примечание для перегрузок
(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)
эквивалентны соответствующим конструкторам без аллокатора, за исключением того, что базовые контейнеры
Параметры
Сложность
1)
Константа.
2)
Линейно по размеру
other
.
3)
То же, что и соответствующий move-конструктор обернутого контейнера, т.е. константная или линейная по размеру
cont
.
4-6)
Линейная от
N
если
cont
отсортирован относительно
value_comp()
, иначе
𝓞(N·log(N))
, где
N
равно значению
key_cont.
size
(
)
до этого вызова.
7-9)
То же, что и соответствующий move-конструктор обёрнутого контейнера, т.е. константная или линейная по размеру
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
.
Исключения
Вызовы
ПримечанияПосле конструирования контейнера перемещением (перегрузка (3)), ссылки, указатели и итераторы, которые изначально ссылались на элементы в Пример
Смотрите также
| ||||||||||||||||||||||||||||||||||||||||||||||