根据首地址和尾地址来赋值:

1
2
3
4
5
6
template<class ForwardIterator, class Generator>
void generate(
ForwardIterator _First,
ForwardIterator _Last,
Generator _Gen
);

每次调用该对象,函数为范围的每个元素调用,且不需要返回相同的值。例如,从文件读取或引用和修改本地状态。 生成器的结果类型必须可转换为可用于向前迭代器类型的值范围的。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <vector>
#include <algorithm>
#include <iostream>
#include <ostream>

int main( )
{
using namespace std;

vector <int> v1 ( 5 );
vector <int>::iterator Iter1;

generate ( v1.begin ( ), v1.end ( ) , rand );

for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
}

// 根据首地址和元素数量来赋值

template<class OutputIterator, class Diff, class Generator>

void generate_n( OutputIterator First, Diff Count, Generator Gen);

参见:VS2015
https://msdn.microsoft.com/zh-cn/library/46h7chx6.aspx