STL 中的 generate() 函数用指定函数对象产生的值去给容器指定范围内元素赋值。而且 generate() 没有任何返回值。
#include <algorithm>
template <class ForwardIterator, class Generator>
void generate (ForwardIterator first, ForwardIterator last, Generator gen);
参数 | 描述 |
---|---|
first | 输入迭代器 |
last | 输入迭代器 |
gen | 一个接受空参数,并返回一个对应的值的函数或者是函数对象之类的 |
使用 STL generate 函数填充元素
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
static int i=0;
int addone()
{
return i++;
}
int main()
{
std::cout << "嗨客网(www.haicoder.net)\n" << std::endl;
vector<int> vi(10);
cout << "at first,vi = ";
for_each(vi.begin(), vi.end(), [](int i){ cout << i << " "; });
cout << endl;
generate(vi.begin(), vi.end(), addone);
cout << "after generate(vi.begin(), vi.end(), addone);\n vi= ";
for_each(vi.begin(), vi.end(), [](int i){cout << i << " ";});
cout << endl;
return 0;
}
我们在 Linux 下使用 g++ 进行编译,具体命令如下:
g++ generate.cpp -std=c++11
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们使用了 generate 函数,实现了填充集合。
STL 中的 generate() 函数用指定函数对象产生的值去给容器指定范围内元素赋值。而且 generate() 没有任何返回值。