Использование Generate для заполнения списка в шаблоне класса Stack Overflow

Я работаю над проектом, где у меня есть шаблон класса, в котором у меня есть список. Эта функция, которую я включил, предназначена для заполнения списка случайными числами. Но каждый раз, когда я запускаю его, он говорит, что «термин не оценивает функцию, принимающую 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));

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 значение.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]