std::vector assign() 方法
- 自 C++20 起
- 自 C++11 起
- 直到 C++11
// (1) Non const version only
constexpr void assign( size_type count, const T& value );
// (2) Non const version only
template< class InputIt >
constexpr void assign( InputIt first, InputIt last );
// (3) Non const version only
constexpr 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 );
// (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
满足LegacyInputIterator
时才参与重载解析。如果
InputIt
是整数类型,此重载与重载 (1) 具有相同的效果。 -
(3) 将内容替换为初始化列表
ilist
中的元素。
失效
所有指向容器元素的迭代器、指针和引用都将失效。
末尾迭代器也会失效。
参数
count
- 容器的新大小value
- 用于初始化容器元素的数值first
,last
- 复制元素的范围ilist
- 复制值的初始化列表
返回值
(无)
复杂度
- (1) 线性与 count 相关 - O(count)。
- (2) 线性与
first
和last
之间的距离相关 - O(std::distance(firs,t last))。 - (3) 线性与
ilist.size()
相关 - O(ilist.size())。
异常
(无)
示例
Main.cpp
#include <vector>
#include <iostream>
#include <string>
int main()
{
std::vector<char> characters;
auto print_vector = [&](){
for (char c : characters)
std::cout << c << ' ';
std::cout << '\n';
};
characters.assign(5, 'a');
print_vector();
const std::string extra(6, 'b');
characters.assign(extra.begin(), extra.end());
print_vector();
characters.assign({'C', '+', '+', '1', '1'});
print_vector();
}
输出
a a a a a
b b b b b b
C + + 1 1