std::iota_C++中文网

定义于头文件 <numeric>

template< class ForwardIt, class T >
void iota( ForwardIt first, ForwardIt last, T value );

(C++11 起)
(C++20 前)

template< class ForwardIt, class T >
constexpr void iota( ForwardIt first, ForwardIt last, T value );

(C++20 起)

以始于 value 并重复地求值 ++value 的顺序递增值填充范围 [first, last)

等价操作:

*(d_first)   = value;
*(d_first+1) = ++value;
*(d_first+2) = ++value;
*(d_first+3) = ++value;
...

参数

first, last - 以 value 开始,按顺序递增填充的值的范围
value - 要存储的初始值,表达式 ++value 必须为良式

返回值

(无)

复杂度

正好 last - first 次自增与赋值。

可能的实现

template<class ForwardIterator, class T>
constexpr // C++20 起
void iota(ForwardIterator first, ForwardIterator last, T value)
{
    while(first != last) {
        *first++ = value;
        ++value;
    }
}

注解

此函数命名来源于编程语言 APL 中的整数函数 ⍳ 。它是 C++98 所不曾包含的 STL 组件之一,但最终于 C++11 进入了标准库。

示例

参阅

将一个给定值复制赋值给一个范围内的每个元素
(函数模板)
将相继的函数调用结果赋值给一个范围中的每个元素
(函数模板)