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