std::inplace_vector<T,N>:: try_append_range
|
template
<
container-compatible-range
<
T
>
R
>
constexpr std :: ranges:: borrowed_iterator_t < R > try_append_range ( R && rg ) ; |
(начиная с C++26) | |
Добавляет копии начальных элементов из
rg
перед
end()
, пока все элементы не будут вставлены или внутреннее хранилище не будет исчерпано (т.е.
size
(
)
==
capacity
(
)
становится
true
).
Все итераторы и ссылки остаются действительными.
end()
итератор становится недействительным.
Каждый итератор в rg разыменовывается не более одного раза.
Содержание |
Параметры
| rg | - |
a
container compatible range
, that is, an
input_range
whose elements are convertible to
T
|
| Требования к типу | ||
-
T
должен быть
EmplaceConstructible
в
inplace_vector
из
*
ranges::
begin
(
rg
)
. В противном случае поведение не определено.
|
||
Возвращаемое значение
Итератор, указывающий на первый элемент rg , который не был вставлен в * this , или ranges:: end ( rg ) , если такого элемента не существует.
Сложность
Линейно по количеству вставленных элементов.
Исключения
Любое исключение, вызванное инициализацией вставляемого элемента.
inplace_vector
предоставляет
базовую гарантию безопасности исключений
, то есть все элементы контейнера до вызова сохраняются, и все уже вставленные элементы (до исключения, если таковое возникло) также сохраняются.
Примечания
|
Этот раздел не завершен
Причина: Объясните назначение данного API. |
Пример
#include <cassert> #include <initializer_list> #include <inplace_vector> int main() { using I = std::inplace_vector<int, 8>; auto nums = I{1, 2, 3}; const auto rg = {-1, -2, -3}; auto it = nums.try_append_range(rg); assert(nums.size() == 6); assert((nums == I{1, 2, 3, -1, -2, -3})); assert(it == rg.end()); it = nums.try_append_range(rg); assert(nums.size() == 8); assert((nums == I{1, 2, 3, -1, -2, -3, -1, -2})); assert(it == rg.begin() + 2); }
Смотрите также
|
добавляет диапазон элементов в конец
(public member function) |
|
|
добавляет элемент в конец
(public member function) |
|
|
пытается добавить элемент в конец
(public member function) |
|
|
безусловно добавляет элемент в конец
(public member function) |
|
|
конструирует элемент на месте в конце
(public member function) |
|
|
пытается сконструировать элемент на месте в конце
(public member function) |
|
|
безусловно конструирует элемент на месте в конце
(public member function) |
|
|
удаляет последний элемент
(public member function) |
|
|
создает
std::back_insert_iterator
типа, выведенного из аргумента
(function template) |