函数模板
<algorithm>

std::fill

template <class ForwardIterator, class T>  void fill (ForwardIterator first, ForwardIterator last, const T& val);
用值填充范围
val赋值给范围 [first,last) 中的所有元素。

此函数模板的行为等同于
1
2
3
4
5
6
7
8
template <class ForwardIterator, class T>
  void fill (ForwardIterator first, ForwardIterator last, const T& val)
{
  while (first != last) {
    *first = val;
    ++first;
  }
}

参数

first, last
指向序列的初始位置和末尾位置的前向迭代器,这些元素支持赋值为 T 类型值。填充的范围是 [first,last),包含 first 指向的元素以及 firstlast 之间的所有元素,但不包含 last 指向的元素。
val
要赋给填充范围内元素的“值”。

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// fill algorithm example
#include <iostream>     // std::cout
#include <algorithm>    // std::fill
#include <vector>       // std::vector

int main () {
  std::vector<int> myvector (8);                       // myvector: 0 0 0 0 0 0 0 0

  std::fill (myvector.begin(),myvector.begin()+4,5);   // myvector: 5 5 5 5 0 0 0 0
  std::fill (myvector.begin()+3,myvector.end()-2,8);   // myvector: 5 5 5 8 8 8 0 0

  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

输出
myvector contains: 5 5 5 8 8 8 0 0


复杂度

firstlast 之间的距离成线性关系:为每个元素赋值。

数据竞争

范围 [first,last) 中的对象会被修改(每个对象被访问一次)。

异常

如果元素赋值或迭代器操作抛出异常,则本函数也会抛出异常。
请注意,无效参数会导致未定义行为

另见