使用生成填充模板 class c++ 中的列表
Using generate to fill list in template class c++
我正在做一个项目,我有一个模板 class,其中有一个列表。我包含的这个函数是为了用随机数填充列表。但是每次我 运行 它都说 "term does not evaluate to a function taking 0 arguments" 而我所理解的是我不能使用 returns 生成中的值的函数。
如何将 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
值。
我正在做一个项目,我有一个模板 class,其中有一个列表。我包含的这个函数是为了用随机数填充列表。但是每次我 运行 它都说 "term does not evaluate to a function taking 0 arguments" 而我所理解的是我不能使用 returns 生成中的值的函数。
如何将 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
值。