📜  C++ STL-algorithm.generate_n()函数(1)

📅  最后修改于: 2023-12-03 14:39:50.593000             🧑  作者: Mango

C++ STL-algorithm.generate_n()函数

在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为我们提供了丰富的函数和算法,以便为我们的应用程序或项目提供便利。