std::inplace_vector<T,N>::try_append_range
来自cppreference.com
< cpp | container | inplace vector
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 | - | 容器兼容范围,即元素可转换为 T 的 input_range
|
类型要求 | ||
-T 必须为从 *ranges::begin(rg) 可就位构造 (EmplaceConstructible) 到 inplace_vector ,否则,其行为未定义。
|
返回值
指向 rg 中未插入 *this 的第一个元素的迭代器,或若不存在这种元素则返回 ranges::end(rg)。
复杂度
与所插入元素数成线性。
异常
所插入元素的初始化抛出的任何异常。
inplace_vector
提供基本异常安全性保证,就是说,保留此次调用前的所有容器元素,而且也保留(发生异常前)所有已经插入的元素(如果有)。
注解
本节未完成 原因:Explain the purpose of this 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); }
参阅
添加元素的范围到末尾 (公开成员函数) | |
将元素添加到容器末尾 (公开成员函数) | |
尝试将元素添加到容器末尾 (公开成员函数) | |
无条件将元素添加到容器末尾 (公开成员函数) | |
在容器末尾原位构造元素 (公开成员函数) | |
try_append_range |
尝试在容器末尾原位构造元素 (公开成员函数) |
无条件在容器末尾原位构造元素 (公开成员函数) | |
移除末元素 (公开成员函数) | |
创建拥有从实参推出的类型的 std::back_insert_iterator (函数模板) |