📅  最后修改于: 2023-12-03 14:39:50.593000             🧑  作者: Mango
在C++标准模板库(STL)中的algorithm头文件中,提供了许多非常有用的函数,其中一个函数是generate_n()
,可以使用此函数来生成序列。
template <class OutputIterator, class Size, class Generator>
void generate_n (OutputIterator first, Size n, Generator gen);
first
:指向要填充元素的起始位置的迭代器。n
:要生成的元素数。gen
:生成器函数对象,用于初始化每个元素。generate_n()
函数使用生成器函数填充容器(或序列)的一部分。该函数填充的元素数由参数n确定。
实现时,该函数将迭代器first
与生成器gen
结合使用,将生成器的输出值写入序列中指定的元素。
假设在vector<int>
容器中增加5个随机数,使用generate_n()
函数生成序列,可这样写:
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
using namespace std;
class RandomNumGenerator {
public:
int operator()() { return rand() % 100; }
};
int main() {
srand((unsigned)time(nullptr));
vector<int> vec(5);
generate_n(vec.begin(), 5, RandomNumGenerator());
for (auto itr = vec.begin(); itr != vec.end(); itr++) {
cout << *itr << " ";
}
return 0;
}
输出:
40 71 23 45 24
在上述示例中,使用RandomNumGenerator()
生成器函数对象填充vector容器中的5个整数。该函数将迭代器vec.begin()
与生成器RandomNumGenerator()
结合使用,填充5个整数到向量vec中。
generate_n()
函数是一个重要函数,用于生成序列的函数。可以结合其他STL算法进行使用,如transform()
和sort()
等。C++ STL为我们提供了丰富的函数和算法,以便为我们的应用程序或项目提供便利。