public member function
<forward_list>

std::forward_list::assign

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);
Assign content
Assigns new contents to the forward_list container, replacing its current contents, and modifying its size accordingly.

In the range version (1), the new contents are elements constructed from each of the elements in the range between first and last, in the same order.

In the fill version (2), the new contents are n elements, each initialized to a copy of val.

In the initializer list version (3), the new contents are copies of the values passed as initializer list, in the same order.

Any elements held in the container before the call are destroyed and replaced by newly constructed elements (no assignments of elements take place).

If there are changes in storage, the internal allocator is used (through its traits). It is also used to destroy all existing elements, and to construct the new ones.

参数

first, last
Input iterators to the initial and final positions in a sequence. The range used is[first,last),它包括firstlast之间的所有元素,包括first指向的元素,但不包括last指向的元素。
函数模板参数InputIteratorshall be an input iterator type that points to elements of a type from whichvalue_type对象的类型的元素。
n
New size for the container.
成员类型size_type是一种无符号整型类型。
val
Value to fill the container with. Each of the n elements in the container will be initialized to a copy of this value.
成员类型value_typeis the type of the elements in the container, defined in forward_list as an alias of its first template parameter (T).
il
一个 initializer_list 对象。编译器将自动从初始化列表声明器创建此类对象。
成员类型value_typeis the type of the elements in the container, defined in forward_list as an alias of its first template parameter (T).

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 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


复杂度

Linear in initial and final container sizes (destructions, constructions).

迭代器有效性

All iterators, references and pointers related to this container are invalidated, except the end iterators.

数据竞争

All copied elements are accessed.
The container is modified.
所有包含的元素都被修改。

异常安全

Basic guarantee: if an exception is thrown, the container is in a valid state.
If allocator_traits::construct is not supported with the appropriate arguments for the element constructions, or if the range specified by[first,last)无效,则会导致未定义行为

另见