std::deque assign() 方法
- 自 C++11 起
- 直到 C++11
// (1) Non const version only
void assign( size_type count, const T& value );
// (2) Non const version only
template< class InputIt >
void assign( InputIt first, InputIt last );
// (3) Non const version only
void assign( std::initializer_list<T> ilist );
// (1) Non const version only
void assign( size_type count, const T& value );
// (2) Non const version only
template< class InputIt >
void assign( InputIt first, InputIt last );
用另一个容器的内容替换当前容器的内容。
-
(1) 将内容替换为
value
的count
份拷贝。 -
(2) 将内容替换为范围 [ first, last ) 中元素的拷贝。
未定义行为如果任一参数是
如果任一参数是*this
中的迭代器,则行为未定义。*this
中的迭代器。- 自 C++11 起
- 直到 C++11
如果
InputIt
是整数类型,此重载与重载 (1) 具有相同的效果。只有当
InputIt
满足LegacyInputIterator
时,此重载才参与重载决议。
(自 C++11 起)
- (3) 将内容替换为初始化列表
ilist
中的元素。
失效
所有指向容器元素的迭代器、指针和引用都将失效。end 后迭代器也失效。
参数
count
- 容器的新大小value
- 用于初始化容器元素的数值first
,last
- 复制元素的范围ilist
- 复制值的初始化列表
返回值
(无)
复杂度
- (1)
count
的线性复杂度 - O(count)。 - (2) 与
first
和last
之间的距离呈线性关系 - O(std::distance(first, last))。 - (3) 线性与
ilist.size()
相关 - O(ilist.size())。
异常
(无)
示例
Main.cpp
#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