我想在Visual Studio中使用121个整数创建自己的离散分布。这是我正在尝试的代码:
std::vector< int> weights(121);
for (int i = 0; i < 121; i++)
{
weights[i] = (teamData[i]).S(); // some numbers from my program data
}
std::discrete_distribution<> dist(weights.begin(), weights.end());
我得到了intellisence错误:
1 IntelliSense: no instance of constructor "std::discrete_distribution<_Ty>::discrete_distribution [with _Ty=int]" matches the argument list
argument types are: (std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int>>>, std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int>>>)
当我编译时,我得到:
错误1错误C2661:&#39; std :: discrete_distribution :: discrete_distribution&#39; :没有重载函数需要2个参数
有谁知道解决这个问题?
答案 0 :(得分:0)
http://en.cppreference.com/w/cpp/numeric/random/discrete_distribution/discrete_distribution
您正在使用迭代器初始化它,因此您需要使用此构造函数
template< class InputIt >
discrete_distribution( InputIt first, InputIt last );
所以我猜它应该是std::discrete_distribution<int&> dist(weights.begin(), weights.end());
但我之前没有使用离散分配。