std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>:: insert
|
std::
pair
<
iterator,
bool
>
insert
(
const
value_type
&
value
)
;
|
(1) | (начиная с C++23) |
|
std::
pair
<
iterator,
bool
>
insert
(
value_type
&&
value
)
;
|
(2) | (начиная с C++23) |
|
iterator insert
(
const_iterator pos,
const
value_type
&
value
)
;
|
(3) | (начиная с C++23) |
|
iterator insert
(
const_iterator pos, value_type
&&
value
)
;
|
(4) | (начиная с C++23) |
|
template
<
class
P
>
std:: pair < iterator, bool > insert ( P && x ) ; |
(5) | (начиная с C++23) |
|
template
<
class
P
>
iterator insert ( const_iterator pos, P && x ) ; |
(6) | (начиная с C++23) |
|
template
<
class
InputIt
>
void insert ( InputIt first, InputIt last ) ; |
(7) | (начиная с C++23) |
|
template
<
class
InputIt
>
void insert ( std:: sorted_unique_t , InputIt first, InputIt last ) ; |
(8) | (начиная с C++23) |
|
void
insert
(
std::
initializer_list
<
key_type
>
ilist
)
;
|
(9) | (начиная с C++23) |
|
void
insert
(
std::
sorted_unique_t
s,
std::
initializer_list
<
key_type
>
ilist
)
;
|
(10) | (начиная с C++23) |
Вставляет элемент(ы) в контейнер, если контейнер еще не содержит элемент с эквивалентным ключом.
x
в
*
this
как если бы с помощью
emplace
(
std::
forward
<
P
>
(
x
)
)
;
. Эта перегрузка участвует в разрешении перегрузки только если
std::
is_constructible_v
<
std::
pair
<
key_type, mapped_type
>
, P
>
равно
true
.
x
в
*
this
в позицию, максимально близкую к позиции непосредственно перед
pos
. Эквивалентно
return
emplace_hint
(
pos,
std::
forward
<
P
>
(
x
)
)
;
. Эта перегрузка участвует в разрешении перегрузки только если
std::
is_constructible_v
<
std::
pair
<
key_type, mapped_type
>
, P
>
равно
true
.
[
first
,
last
)
последовательно выполняя следующие операции:
-
Добавляет элементы в
cкак если бы с помощью
for ( ; first ! = last ; ++ first )
{
value_type value = * first ;
c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
} -
Сортирует диапазон вновь вставленных элементов относительно
value_comp. - Объединяет полученный отсортированный диапазон и отсортированный диапазон существующих элементов в единый отсортированный диапазон.
-
Удаляет дубликаты элементов как если бы с помощью:
auto zv = std :: views:: zip ( c. keys , c. values ) ;
auto it = ranges:: unique ( zv, key_equiv ( compare ) ) . begin ( ) ;
auto dist = std:: distance ( zv. begin ( ) , it ) ;
c. keys . erase ( c. keys . begin ( ) + dist, c. keys . end ( ) ) ;
c. values . erase ( c. values . begin ( ) + dist, c. values . end ( ) ) ;
[
first
,
last
)
как если бы выполнялись следующие операции последовательно:
-
Добавляет элементы в
cкак если бы:
for ( ; first ! = last ; ++ first )
{
value_type value = * first ;
c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
} - Объединяет отсортированный диапазон вновь добавленных элементов и отсортированный диапазон существующих элементов в единый отсортированный диапазон.
-
Удаляет дублирующиеся элементы как если бы:
auto zv = std :: views:: zip ( c. keys , c. values ) ;
auto it = ranges:: unique ( zv, key_equiv ( compare ) ) . begin ( ) ;
auto dist = std:: distance ( zv. begin ( ) , it ) ;
c. keys . erase ( c. keys . begin ( ) + dist, c. keys . end ( ) ) ;
c. values . erase ( c. values . begin ( ) + dist, c. values . end ( ) ) ;
| Информация о недействительности итераторов скопирована отсюда |
Содержание |
Параметры
| pos | - | итератор на позицию, перед которой будет вставлен новый элемент |
| value | - | значение элемента для вставки |
| first, last | - | пара итераторов, определяющая исходный диапазон элементов для вставки |
| ilist | - | список инициализации для вставки значений |
| x | - | значение любого типа, которое можно прозрачно сравнивать с ключом |
| s | - |
тег устранения неоднозначности, указывающий, что входная последовательность отсортирована (относительно
value_comp()
) и содержит только уникальные элементы
|
| Требования к типам | ||
-
InputIt
должен удовлетворять требованиям
LegacyInputIterator
.
|
||
Возвращаемое значение
Исключения
|
Этот раздел не завершён
Причина: случаи 7-10 |
Сложность
size()
.
size()
.
Примечания
Подсказанная вставка
(
(
3,4
)
и
(
6
)
)
не возвращает булево значение для совместимости сигнатур с позиционной вставкой в последовательных контейнерах, таких как
std::vector::insert
. Это позволяет создавать универсальные вставщики, такие как
std::inserter
. Один из способов проверки успешности подсказанной вставки — сравнение
size()
до и после операции.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
создаёт элемент на месте
(публичная функция-член) |
|
|
создаёт элементы на месте с использованием подсказки
(публичная функция-член) |
|
|
вставляет элемент или присваивает текущему элементу, если ключ уже существует
(публичная функция-член) |
|
|
создаёт
std::insert_iterator
типа, выведенного из аргумента
(шаблон функции) |