命名空间
变体
操作

std::inplace_vector<T,N>::try_append_range

来自 cppreference.com
 
 
 
 
template< container-compatible-range<T> R >
constexpr std::ranges::borrowed_iterator_t<R> try_append_range( R&& rg );
(自 C++26)

end() 之前追加 rg 中初始元素的副本,直到所有元素都被插入或内部存储空间耗尽(即 size() == capacity()true)。

所有迭代器和引用保持有效。 end() 迭代器失效。

rg 中的每个迭代器最多被解引用一次。

内容

[编辑] 参数

rg - 一个 容器兼容范围,即一个 input_range,其元素可转换为 T
类型要求
-
T 必须可以 EmplaceConstructibleinplace_vector 中,来自 *ranges::begin(rg)。否则,行为未定义。

[编辑] 返回值

指向 rg 中未插入到 *this 中的第一个元素的迭代器,或者如果不存在这样的元素,则指向 ranges::end(rg) 的迭代器。

[编辑] 复杂度

插入元素数量的线性时间。

[编辑] 异常

插入元素初始化抛出的任何异常。

inplace_vector 提供基本异常安全保证,即容器在调用之前的元素都被保留,并且所有已经插入的元素(如果发生异常,则在异常之前)也被保留。

[编辑] 注释

[编辑] 示例

#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,其类型从参数推断
(函数模板) [编辑]