使用生成来填充模板类 c++ 中的列表

Using generate to fill list in template class c++

本文关键字:c++ 列表 填充      更新时间:2023-10-16

我正在做一个项目,我有一个模板类,我有一个列表。我包含的这个函数旨在用随机数填充列表。但是每次我运行它时,它都会说"term 不会计算为一个接受 0 个参数的函数",我所理解的是我不能使用在 Generate 中返回值的函数。

如何将生成器和随机设置为函子?没有它有办法做到这一点吗?

template<typename T>
void ListManipulator<T>::fillList()
{
std::uniform_real_distribution<double> random(1000, 2000);
std::default_random_engine generator(static_cast<unsigned>(std::time(0)));
std::generate(theList.begin(), theList.end(), random(generator));

尝试以下操作:

std::uniform_real_distribution<double> random(1000, 2000);
std::default_random_engine generator(static_cast<unsigned>(std::time(0)));
std::generate(theList.begin(), theList.end(), 
[&random, &generator]{ return random(generator); });

std::generate需要一个生成器,它是一个带有签名的函数:

Ret fun();

而且您提供的根本不是函数,而是double值。