📅  最后修改于: 2023-12-03 15:14:02.852000             🧑  作者: Mango
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++标准库中一个强大的算法,可用于在指定范围内生成指定数量的值。它通过提供一个生成函数,使得生成值的过程非常灵活。使用它可以简化许多常见的生成操作,例如随机数生成、序列填充等。