std::inplace_vector<T,N>:: insert
From cppreference.net
<
cpp
|
container
|
inplace vector
|
constexpr
iterator insert
(
const_iterator pos,
const
T
&
value
)
;
|
(1) | (начиная с C++26) |
|
constexpr
iterator insert
(
const_iterator pos, T
&&
value
)
;
|
(2) | (начиная с C++26) |
|
constexpr
iterator insert
(
const_iterator pos, size_type count,
const
T
&
value
)
;
|
(3) | (начиная с C++26) |
|
template
<
class
InputIt
>
constexpr iterator insert ( const_iterator pos, InputIt first, InputIt last ) ; |
(4) | (начиная с C++26) |
|
constexpr
iterator insert
(
const_iterator pos,
std::
initializer_list
<
T
>
ilist
)
;
|
(5) | (начиная с C++26) |
Вставляет элементы в указанное место контейнера.
1)
Вставляет копию
value
перед
pos
.
2)
Вставляет
value
перед
pos
, возможно используя семантику перемещения.
3)
Вставляет
count
копий значения
value
перед позицией
pos
.
4)
Вставляет элементы из диапазона
[
first
,
last
)
перед
pos
.
Эта перегрузка участвует в разрешении перегрузки только если
InputIt
является
LegacyInputIterator
(чтобы избежать неоднозначности с перегрузкой
(3)
).
Каждый итератор в
[
first
,
last
)
разыменовывается один раз.
Если
first
и
last
являются итераторами в
*
this
, поведение не определено.
5)
Вставляет элементы из списка инициализации
ilist
перед
pos
. Эквивалентно:
insert
(
pos, ilist.
begin
(
)
, ilist.
end
(
)
)
;
.
| Этот раздел не завершён |
Содержание |
Параметры
| pos | - |
итератор, перед которым будет вставлено содержимое (
pos
может быть итератором
end()
)
|
| value | - | значение элемента для вставки |
| count | - | количество элементов для вставки |
| first, last | - | пара итераторов, определяющая исходный диапазон элементов для вставки |
| ilist | - | std::initializer_list для вставки значений из |
| Требования к типам | ||
-
T
должен удовлетворять требованиям
CopyInsertable
для использования перегрузки (1).
|
||
-
T
должен удовлетворять требованиям
MoveInsertable
для использования перегрузки (2).
|
||
-
T
должен удовлетворять требованиям
CopyAssignable
и
CopyInsertable
для использования перегрузки (3).
|
||
-
T
должен удовлетворять требованиям
EmplaceConstructible
для использования перегрузок (4,5).
|
||
Возвращаемое значение
1,2)
Итератор, указывающий на вставленное
value
.
3)
Итератор, указывающий на первый вставленный элемент, или
pos
если
count
==
0
.
4)
Итератор, указывающий на первый вставленный элемент, или
pos
если
first
==
last
.
5)
Итератор, указывающий на первый вставленный элемент, или
pos
если
ilist
пуст.
Сложность
Линейно по количеству вставленных элементов плюс расстояние между
pos
и
end()
контейнера.
Исключения
- Выбрасывает std::bad_alloc если до вызова size ( ) == capacity ( ) . Функция не имеет побочных эффектов ( гарантия строгой безопасности исключений ).
-
Любое исключение, выброшенное при инициализации вставляемого элемента или любой
LegacyInputIterator
операции. Элементы в
[ 0 ,pos)не модифицируются.
Пример
Запустить этот код
#include <initializer_list> #include <inplace_vector> #include <iterator> #include <new> #include <print> int main() { std::inplace_vector<int, 14> v(3, 100); std::println("1. {}", v); auto pos = v.begin(); pos = v.insert(pos, 200); // перегрузка (1) std::println("2. {}", v); v.insert(pos, 2, 300); // перегрузка (3) std::println("3. {}", v); int arr[] = {501, 502, 503}; v.insert(v.begin(), arr, arr + std::size(arr)); // перегрузка (4) std::println("4. {}", v); v.insert(v.end(), {601, 602, 603}); // перегрузка (5) std::println("5. {}", v); const auto list = {-13, -12, -11}; try { v.insert(v.begin(), list); // выбрасывает исключение: нет места } catch(const std::bad_alloc&) { std::println("bad_alloc: v.capacity()={} < v.size()={} + list.size()={}", v.capacity(), v.size(), list.size()); } }
Вывод:
1. [100, 100, 100] 2. [200, 100, 100, 100] 3. [300, 300, 200, 100, 100, 100] 4. [501, 502, 503, 300, 300, 200, 100, 100, 100] 5. [501, 502, 503, 300, 300, 200, 100, 100, 100, 601, 602, 603] bad_alloc: v.capacity()=14 < v.size()=12 + list.size()=3
Смотрите также
|
создаёт элемент на месте
(публичная функция-член) |
|
|
вставляет диапазон элементов
(публичная функция-член) |