std::inplace_vector<T,N>::try_append_range
来自 cppreference.cn
< cpp | container | inplace vector
template< container-compatible-range<T> R > constexpr std::ranges::borrowed_iterator_t<R> try_append_range( R&& rg ); |
(since C++26) | |
将 rg 中初始元素的副本追加到 end()
之前,直到所有元素都被插入或内部存储耗尽(即 size() == capacity() 为 true)。
所有迭代器和引用仍然有效。end()
迭代器失效。
rg 中的每个迭代器最多被解引用一次。
目录 |
[编辑] 参数
rg | - | 一个容器兼容范围,即一个input_range ,其元素可转换为 T |
类型要求 | ||
-T 必须可以从 *ranges::begin(rg) 原位构造 到 inplace_vector 中。否则,行为是未定义的。 |
[编辑] 返回值
一个指向 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); }
[编辑] 参见
将一系列元素添加到末尾 (公开成员函数) | |
将一个元素添加到末尾 (公开成员函数) | |
尝试将一个元素添加到末尾 (公开成员函数) | |
无条件地将一个元素添加到末尾 (公开成员函数) | |
在末尾就地构造一个元素 (公开成员函数) | |
尝试在末尾就地构造一个元素 (公开成员函数) | |
无条件地在末尾就地构造一个元素 (公开成员函数) | |
移除最后一个元素 (公开成员函数) | |
创建一个从参数推断类型的 std::back_insert_iterator (函数模板) |