Home C&C++函数库 c++ 语法 程序源码 Linux C库

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 插入元素(公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图