std::deque<T,Allocator>::assign_range
来自cppreference.com
template<container-compatible-range<T> R > void assign_range( R&& rg ); | (C++23 起) (C++26 起为 constexpr) | |
将容器中的元素替换成 rg 中每个元素的副本。
指代元素的所有迭代器(包括 end()
迭代器)和所有引用均会失效。
范围 rg 中每个迭代器均恰好被解引用一次。
如果 rg 与 *this 重叠,那么行为未定义。
目录 |
[编辑]参数
rg | - | 引用类型可转换到容器元素类型的 input_range |
类型要求 | ||
-如果 std::assignable_from<T&, ranges::range_reference_t<R>> 未得到实现,那么程序非良构。 | ||
-如果 T 从 *ranges::begin(rg) 不可就位构造(EmplaceConstructible) 到 deque 中,那么行为未定义。 |
注解
功能特性测试宏 | 值 | 标准 | 功能特性 |
---|---|---|---|
__cpp_lib_containers_ranges | 202202L | (C++23) | 按范围构造和插入 |
[编辑]示例
运行此代码
#include <algorithm>#include <cassert>#include <deque>#include <list> int main(){constauto 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());#endifassert(std::ranges::equal(source, destination));}
[编辑]参阅
(C++23) | 插入元素范围 (公开成员函数) |
(C++23) | 添加元素的范围到起始 (公开成员函数) |
(C++23) | 添加元素的范围到末尾 (公开成员函数) |
将值赋给容器 (公开成员函数) | |
将值赋给容器 (公开成员函数) |