std::deque<T,Allocator>::assign_range
来自cppreference.com
template< container-compatible-range<T> R > void assign_range( R&& rg ); |
(C++23 起) | |
将容器中的元素替换成 rg 中每个元素的副本。
指代元素的所有迭代器(包括 end()
迭代器)和所有引用均会失效。
范围 rg 中每个迭代器均恰好被解引用一次。
若 rg 与容器重叠则行为未定义。
参数
rg | - | 引用类型可转换为容器元素类型的 input_range
|
类型要求 | ||
-std::assignable_from<T&, ranges::range_reference_t<R>> 必须得到实现。否则程序非良构。 | ||
-T 必须从 *ranges::begin(rg) 可就位构造 (EmplaceConstructible) 到容器中。否则行为未定义。
|
返回值
(无)
注解
功能特性测试宏 | 值 | 标准 | 功能特性 |
---|---|---|---|
__cpp_lib_containers_ranges |
202202L | (C++23) | 按范围构造和插入 |
示例
运行此代码
#include <algorithm> #include <cassert> #include <deque> #include <list> int main() { const auto source = std::list{2, 7, 1}; auto destination = std::deque{3, 1, 4}; #ifdef __cpp_lib_containers_ranges destination.assign_range(source); #else destination.assign(source.cbegin(), source.cend()); #endif assert(std::ranges::equal(source, destination)); }
参阅
(C++23) |
插入一个元素范围 (公开成员函数) |
(C++23) |
添加元素的范围到起始 (公开成员函数) |
(C++23) |
添加元素的范围到末尾 (公开成员函数) |
将值赋给容器 (公开成员函数) |