std::
forward_list::assign
公众成员函数 <forward_list>
range (1) |
template <class InputIterator>
void assign (InputIterator first, InputIterator last); |
fill (2) |
void assign (size_type n, const value_type& val); |
initializer list (3) |
void assign (initializer_list<value_type> il); |
分配内容
为forward_list容器分配新内容,替换其当前内容,并相应地修改其大小。
range (1)中,新内容是由first和last之间的范围内的每个元素以相同的顺序构造的元素。
fill(2)中,新内容有n个元素,每个元素都被初始化为val的副本。
initializer list(3) 新内容是作为初始化列表传递的值的副本,顺序相同。
在调用之前容器中保存的所有元素都被销毁,并被新构造的元素替换(没有对元素进行赋值)。
如果存储发生了变化,则使用内部分配器(通过它的特征)。它还可以用来销毁所有现有的元素,并构建新的元素。
☲ 参数
-
fwdlst
-
输入迭代器到序列的初始和最终位置。使用的范围是[first,last),
它包括first和last之间的所有元素,包括first所指向的元素,但不包括last所指向的元素。
函数模板实参InputIterator必须是一个输入迭代器类型,
该类型指向可以构造value_type对象的类型的元素。
-
n
-
容器的新大小。
成员类型size_type是一个无符号整型。
-
val
-
填充容器的值。容器中的每个元素都将被初始化为这个值的副本。
成员类型value_type是容器中元素的类型,在forward_list中定义为第一个模板形参(T)的别名。
-
il
-
一个initializer_list对象。编译器将自动从初始化列表声明符构造此类对象。
成员类型value_type是容器中元素的类型,在forward_list中定义为第一个模板形参(T)的别名。
☉ 返回值
none
☣ 示例
// forward_list::assign
#include <iostream>
#include <forward_list>
int main ()
{
std::forward_list<int> first;
std::forward_list<int> second;
first.assign (4,15); // 15 15 15 15
second.assign (first.begin(),first.end()); // 15 15 15 15
first.assign ( {77, 2, 16} ); // 77 2 16
std::cout << "first contains: ";
for (int& x : first) std::cout << ' ' << x;
std::cout << '\n';
std::cout << "second contains: ";
for (int& x : second) std::cout << ' ' << x;
std::cout << '\n';
return 0;
} |
输出:
first contains: 77 2 16
second contains: 15 15 15 15
✥ 复杂度
初始和最终容器大小线性(析构,构造)。
☣ 迭代器的有效性
除了结束迭代器外,与此容器相关的所有迭代器、引用和指针都会失效。
⇄ 数据竞争
访问所有复制的元素。
完成容器的修改。
所有包含的元素都被修改。
☂ 异常安全性
基本保证:如果抛出异常,则容器处于有效状态。
如果allocator_traits::construct不支持元素结构的适当参数,
或者如果[first,last)指定的范围无效,它将导致未定义的行为。
🍄 另请参阅
forward_list::forward_list |
构建forward_list对象(公众成员函数) |
forward_list::operator= |
内容赋值 (公众成员函数) |
forward_list::insert_after |
插入元素(公众成员函数) |