函数模板
<numeric>

std::iota

template <class ForwardIterator, class T>  void iota (ForwardIterator first, ForwardIterator last, T val);
存储递增序列
将递增后的 val 的值依次赋给范围 [first,last) 中的每个元素,如同每次赋值后执行 ++val

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

参数

first, last
正向迭代器,指向序列的初始和末尾位置。使用的范围是 [first,last),包含 first 指向的元素,但不包含 last 指向的元素。
val
累加器的初始值。

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// iota example
#include <iostream>     // std::cout
#include <numeric>      // std::iota

int main () {
  int numbers[10];

  std::iota (numbers,numbers+10,100);

  std::cout << "numbers:";
  for (int& i:numbers) std::cout << ' ' << i;
  std::cout << '\n';

  return 0;
}

输出

numbers: 100 101 102 103 104 105 106 107 108 109


复杂度

firstlast 之间的距离成线性关系(包括增量和赋值操作)。

数据竞争

firstlast 范围内的元素会被修改(每个元素被修改一次)。

异常

如果任何赋值或增量操作抛出异常,则该函数也抛出异常。
请注意,无效参数会导致未定义行为

另见