0

我正在做一个项目,我有一个模板类,其中有一个列表。我包含的这个函数旨在用随机数填充列表。但是每次我运行它时,它都会说“术语不会评估为采用 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));
4

1 回答 1

0

尝试以下操作:

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价值。

于 2018-05-08T21:06:51.163 回答