std::deque<T,Allocator>:: assign
|
void
assign
(
size_type count,
const
T
&
value
)
;
|
(1) | (自 C++26 起为 constexpr) |
|
template
<
class
InputIt
>
void assign ( InputIt first, InputIt last ) ; |
(2) | (自 C++26 起为 constexpr) |
|
void
assign
(
std::
initializer_list
<
T
>
ilist
)
;
|
(3) |
(自 C++11 起)
(自 C++26 起为 constexpr) |
替换容器中的内容。
[
first
,
last
)
中元素的副本。
|
若
|
(C++11 前) |
|
仅当
|
(C++11 起) |
所有迭代器(包括
end()
迭代器)及所有对元素的引用都会失效。
目录 |
参数
| count | - | 容器的新大小 |
| value | - | 用于初始化容器元素的值 |
| first, last | - | 定义待复制元素源 范围 的迭代器对 |
| ilist | - | 复制值来源的 std::initializer_list |
复杂度
示例
以下代码使用
assign
向
std::
deque
<
char
>
添加若干字符:
#include <deque> #include <iostream> #include <string> int main() { std::deque<char> characters; auto print_deque = [&]() { for (char c : characters) std::cout << c << ' '; std::cout << '\n'; }; characters.assign(5, 'a'); print_deque(); const std::string extra(6, 'b'); characters.assign(extra.begin(), extra.end()); print_deque(); characters.assign({'C', '+', '+', '1', '1'}); print_deque(); }
输出:
a a a a a b b b b b b C + + 1 1
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用范围 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 2209 | C++98 |
替换操作被要求实现为
先删除所有现有元素再插入给定元素 |
移除了该
要求 |
参见
|
(C++23)
|
向容器赋值一个值范围
(公开成员函数) |
|
向容器赋值
(公开成员函数) |