SGI

生成

类别:算法 组件类型:函数

原型

template <class ForwardIterator, class Generator>
void generate(ForwardIterator first, ForwardIterator last, Generator gen);

描述

生成将调用gen的结果(一个不带参数的函数对象)赋给范围[first, last). [1]

中的每个元素。

定义

定义在标准头文件algorithm中,以及非标准的后向兼容头文件algo.h中。

的值类型。

是一个有效的范围。

复杂度线性。正好last - firstgen. [1]

次调用

示例使用标准C库函数.
vector<int> V;
...
generate(V.begin(), V.end(), rand);

rand

填充一个包含随机数的向量。gen备注[first, last)[1] 对于范围中的每个迭代器,都会调用函数对象

, 而不是只在循环外调用一次。这种区别很重要,因为生成器不必每次调用都返回相同的结果;它被允许从文件读取,引用和修改局部状态,等等。生成[2] 的原因是[first, last)要求其参数为可修改的前向迭代器,而不是仅仅是输出迭代器,是因为它使用了一系列迭代器。无法以合理的方式描述输出迭代器的范围,因为不可能比较两个输出迭代器是否相等。该generate_n

算法确实有一个允许使用输出迭代器的接口。

另请参阅, copy, fill, 迭代器。无法以合理的方式描述输出迭代器的范围,因为不可能比较两个输出迭代器是否相等。该, fill_n
[Silicon Surf] [STL Home]
iota 版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。