Использование generate для заполнения списка в шаблонном классе c ++ - PullRequest
0 голосов
/ 09 мая 2018

Я работаю над проектом, в котором у меня есть шаблонный класс, в котором у меня есть список. Эта функция, которую я включил, предназначена для заполнения списка случайными числами. Но каждый раз, когда я запускаю его, он говорит, что «термин не оценивает функцию, принимающую 0 аргументов», и я понял, что не могу использовать функцию, которая возвращает значение в Generate.

Как мне сделать Generator и Random для функторов? Есть ли способ сделать это без него?

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));

1 Ответ

0 голосов
/ 09 мая 2018

Попробуйте следующее:

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.

...