📜  C++中的std :: generate_n(1)

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

C++中的std::generate_n

在C++标准库中,std::generate_n函数是一个通用算法,用于生成指定数量的值并存储在特定范围内。它接受一个迭代器作为起始位置,并根据用户提供的生成函数生成指定数量的值。

用法

std::generate_n函数的声明如下:

template<class OutputIt, class Size, class Generator>
OutputIt generate_n(OutputIt first, Size count, Generator g);

该函数接受三个参数:

  • first:起始位置的迭代器,指向要生成的第一个值的位置。
  • count:要生成的值的数量。
  • g:生成函数或可调用对象,它将被连续调用以生成新的值。
示例

以下代码段演示了如何使用std::generate_n函数生成一系列随机数并将其存储在容器中:

#include <iostream>
#include <vector>
#include <algorithm>
#include <random>

int main() {
    std::vector<int> numbers(10); // 定义存储随机数的容器

    // 使用std::generate_n生成10个随机数
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(1, 100); // 生成1到100之间的随机数

    std::generate_n(numbers.begin(), numbers.size(), [&]() {
        return dis(gen);
    });

    // 输出生成的随机数
    std::cout << "随机数: ";
    for (const auto& num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

在上述示例中,我们首先创建一个大小为10的容器numbers来存储生成的随机数。然后,我们使用std::generate_n函数将生成函数[&]() { return dis(gen); }应用于整个容器,从而为每个位置生成一个随机数。最后,我们将生成的随机数输出到控制台。

此示例使用了C++11中的lambda表达式和随机数生成函数。确保包含适当的头文件<iostream><vector><algorithm><random>以及必要的命名空间std

结论

std::generate_n是C++标准库中一个强大的算法,可用于在指定范围内生成指定数量的值。它通过提供一个生成函数,使得生成值的过程非常灵活。使用它可以简化许多常见的生成操作,例如随机数生成、序列填充等。