STL 中的 generate_n() 函数是使用 generate 的返回值填充指定位置及之后的 n 个元素的函数。
#include <algorithm>
template <class OutputIterator, class Size, class Generator>
OutputIterator generate_n (OutputIterator first, Size n, Generator gen);
参数 | 描述 |
---|---|
first | 输入迭代器 |
last | 输入迭代器 |
gen | 一个接受空参数,并返回一个对应的值的函数或者是函数对象之类的 |
使用 STL generate_n 函数填充元素
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
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;
int i = 0;
generate_n(vi.begin(),7,[&i](){return i++;});
cout << "after generate(vi.begin(),7,[&i](){return i++;});\n vi= ";
for_each(vi.begin(), vi.end(), [](int i){cout << i << " ";});
cout << endl;
return 0;
}
我们在 Linux 下使用 g++ 进行编译,具体命令如下:
g++ generate_n.cpp -std=c++11
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们使用了 generate_n 函数,实现了填充集合。
STL 中的 generate_n() 函数是使用 generate 的返回值填充指定位置及之后的 n 个元素的函数。