std::inplace_vector<T,N>:: append_range
|
template
<
container-compatible-range
<
T
>
R
>
constexpr void append_range ( R && rg ) ; |
(начиная с C++26) | |
Вставляет копии элементов из диапазона
rg
перед
end()
, в прямом порядке.
Каждый итератор в rg разыменовывается ровно один раз.
Содержание |
Параметры
| rg | - |
a
container compatible range
, that is, an
input_range
whose elements are convertible to
T
|
| Type requirements | ||
-
T
is not
EmplaceConstructible
into
inplace_vector
from
*
ranges::
begin
(
rg
)
, the behavior is undefined.
|
||
Сложность
Линейно по размеру
rg
. Количество вызовов конструктора
T
точно равно
std
::
ranges::
size
(
rg
)
)
.
Исключения
Выбрасывает
std::bad_alloc
если
std
::
ranges::
size
(
rg
)
>
N
.
Если исключение выбрасывается не конструктором копирования, конструктором перемещения, оператором присваивания или оператором перемещающего присваивания
T
или любой операцией
InputIterator
, эффекты отсутствуют.
В противном случае, если исключение выбрасывается, то
size
(
)
>=
n
и элементы в диапазоне
[
0
,
n
)
не модифицируются,
где
n
- значение
size()
до этого вызова.
Пример
#include <cassert> #include <inplace_vector> #include <iostream> int main() { using I = std::inplace_vector<int, 8>; auto head = I{1, 2, 3, 4}; const auto tail = {-5, -6, -7}; head.append_range(tail); assert(head.size() == 7 and (head == I{1, 2, 3, 4, -5, -6, -7})); try { head.append_range(tail); // throws: no space } catch(const std::bad_alloc&) { std::cout << "std::bad_alloc\n"; } }
Вывод:
std::bad_alloc
Смотрите также
|
пытается добавить диапазон элементов в конец
(публичная функция-член) |
|
|
вставляет диапазон элементов
(публичная функция-член) |
|
|
добавляет элемент в конец
(публичная функция-член) |
|
|
создаёт элемент на месте в конце
(публичная функция-член) |