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 | - |
一个
容器兼容范围
,即元素可转换为
T
的
input_range
|
| 类型要求 | ||
-
T
必须能从
*
ranges::
begin
(
rg
)
进行
EmplaceConstructible
到
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
(函数模板) |