我在下面的代码行中遇到了一个编译错误,我不能完全理解。根据msdn的说法,语法是正确的。
vector<int> temp_weights = //some data will be here
discrete_distribution<int> weights ({ temp_weights.begin(), temp_weights.end() }); //error C2440完整的错误是:
Error 5 error C2440: 'initializing' : cannot convert from 'initializer-list' to 'std::discrete_distribution<int>' 发布于 2017-01-05 22:18:59
discrete_distribution<int> weights { temp_weights.begin(), temp_weights.end() };
这不起作用的原因是因为它是初始化列表的语法,编译器认为您希望将temp_weights.begin()存储在weights[0]中,将temp_weights.end()存储在weights[1]中。
应该有一个接受两个向量的构造器(为了复制vector::iterator元素),所以这对你应该是有效的。
discrete_distribution<int> weights ( temp_weights.begin(), temp_weights.end() );
https://stackoverflow.com/questions/41487126
复制相似问题