std::multiset<Key,Compare,Allocator>:: insert
From cppreference.net
|
iterator insert
(
const
value_type
&
value
)
;
|
(1) | |
|
iterator insert
(
value_type
&&
value
)
;
|
(2) | (начиная с C++11) |
| (3) | ||
|
iterator insert
(
iterator pos,
const
value_type
&
value
)
;
|
(до C++11) | |
|
iterator insert
(
const_iterator pos,
const
value_type
&
value
)
;
|
(начиная с C++11) | |
|
iterator insert
(
const_iterator pos, value_type
&&
value
)
;
|
(4) | (начиная с C++11) |
|
template
<
class
InputIt
>
void insert ( InputIt first, InputIt last ) ; |
(5) | |
|
void
insert
(
std::
initializer_list
<
value_type
>
ilist
)
;
|
(6) | (начиная с C++11) |
|
iterator insert
(
node_type
&&
nh
)
;
|
(7) | (начиная с C++17) |
|
iterator insert
(
const_iterator pos, node_type
&&
nh
)
;
|
(8) | (начиная с C++17) |
Вставляет элемент(ы) в контейнер. Порядок оставшихся эквивалентных элементов сохраняется.
1,2)
Вставляет
value
. Если контейнер содержит элементы с эквивалентным ключом, вставляет в верхнюю границу этого диапазона.
3,4)
Вставляет
value
в позицию, максимально близкую к позиции непосредственно перед
pos
.
5)
Вставляет элементы из диапазона
[
first
,
last
)
.
6)
Вставляет элементы из списка инициализации
ilist
.
7)
Если
nh
является пустым
node handle
, не делает ничего. В противном случае вставляет элемент, принадлежащий
nh
, в контейнер и возвращает итератор, указывающий на вставленный элемент. Если в контейнере существует диапазон, содержащий элементы с ключами, эквивалентными
nh.
key
(
)
, элемент вставляется в конец этого диапазона. Поведение не определено, если
nh
не пуст и
get_allocator
(
)
!
=
nh.
get_allocator
(
)
.
8)
Если
nh
является пустым
node handle
, не выполняет никаких действий и возвращает конечный итератор. В противном случае вставляет элемент, принадлежащий
nh
, в контейнер и возвращает итератор, указывающий на элемент с ключом, эквивалентным
nh.
key
(
)
. Элемент вставляется как можно ближе к позиции непосредственно перед
pos
. Поведение не определено, если
nh
не пуст и
get_allocator
(
)
!
=
nh.
get_allocator
(
)
.
Никакие итераторы или ссылки не инвалидируются. Если вставка успешна, указатели и ссылки на элемент, полученные пока он содержался в node handle, инвалидируются, а указатели и ссылки, полученные на этот элемент до его извлечения, становятся валидными. (since C++17)
Содержание |
Параметры
| pos | - | итератор на позицию, перед которой будет вставлен новый элемент |
| value | - | значение элемента для вставки |
| first, last | - | пара итераторов, определяющая исходный диапазон элементов для вставки |
| ilist | - | список инициализации, из которого берутся значения для вставки |
| nh | - | совместимый node handle |
| Требования к типам | ||
-
InputIt
должен удовлетворять требованиям
LegacyInputIterator
.
|
||
Возвращаемое значение
1-4)
Итератор на вставленный элемент.
5,6)
(нет)
7,8)
Конечный итератор, если
nh
был пустым, итератор указывающий на вставленный элемент в противном случае.
Исключения
1-4,7,8)
Если при выполнении любой операции возникает исключение, вставка не производится.
5,6)
Гарантия безопасности исключений отсутствует.
Сложность
1,2,7)
O(log(size()))
3,4,8)
Амортизированная константа, если вставка происходит в позицию непосредственно перед
pos
,
O(log(size()))
в противном случае.
5,6)
O(N·log(size() + N))
, где
N
- количество вставляемых элементов.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 233 | C++98 | pos был просто подсказкой, его можно было полностью игнорировать |
вставка должна быть
как можно ближе к позиции непосредственно перед pos |
| LWG 264 | C++98 |
сложность перегрузки
(5)
требовалась линейной, если
диапазон
[first, last)
отсортирован согласно
Compare
|
убрано требование линейности
в этом специальном случае |
| LWG 371 | C++98 | порядок эквивалентных элементов не гарантировался | требуется сохранять |
Смотрите также
|
(C++11)
|
создаёт элемент на месте
(public member function) |
|
(C++11)
|
создаёт элементы на месте с использованием подсказки
(public member function) |
|
создаёт
std::insert_iterator
типа, выведенного из аргумента
(function template) |