std::inplace_vector<T,N>::assign_range
来自cppreference.com
< cpp | container | inplace vector
template<container-compatible-range<T> R > constexprvoid assign_range( R&& rg ); | (C++26 起) | |
将容器中的元素替换成 rg 中每个元素的副本。
本节未完成 |
范围 rg 中每个迭代器均恰好被解引用一次。
如果 rg 与 *this 重叠,那么行为未定义。
目录 |
[编辑]参数
rg | - | 引用类型可转换到容器元素类型的 input_range |
类型要求 | ||
-如果 std::assignable_from<T&, ranges::range_reference_t<R>> 未得到实现,那么程序非良构。 | ||
-如果 T 从 *ranges::begin(rg) 不可就位构造(EmplaceConstructible) 到 inplace_vector 中,那么行为未定义。 |
异常
- 在 std::ranges::distance(rg)> capacity() 时抛出 std::bad_alloc。
- 初始化被插入元素时抛出的任何异常。
[编辑]示例
运行此代码
#include <algorithm>#include <cassert>#include <initializer_list>#include <inplace_vector>#include <iostream>#include <new> int main(){constauto source ={1, 2, 3}; std::inplace_vector<int, 4> destination{4, 5}; destination.assign_range(source);assert(std::ranges::equal(destination, source)); try{constauto bad ={-1, -2, -3, -4, -5}; destination.assign_range(bad);// throws: bad.size() > destination.capacity()}catch(conststd::bad_alloc& ex){std::cout<< ex.what()<<'\n';}}
可能的输出:
std::bad_alloc
[编辑]参阅
插入元素范围 (公开成员函数) | |
添加元素的范围到末尾 (公开成员函数) | |
将值赋给容器 (公开成员函数) | |
将值赋给容器 (公开成员函数) |