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) (удалено в 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. |
| Макрос проверки признака | Значение | Стандарт | Признак |
|---|---|---|---|
__cpp_lib_inplace_vector |
202603L |
(C++26) | Удалён try_append_range
|
Пример
#include <cassert>
#include <initializer_list>
#include <inplace_vector>
int main()
{
#if defined(__cpp_lib_inplace_vector) and (__cpp_lib_inplace_vector < 202603L)
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);
#endif
}
Смотрите также
|
добавляет диапазон элементов в конец
(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) |