#include <random>
#include <algorithm>
#include <vector>
int main() {
std::vector < int > a = {1, 2, 3};
std::mt19937 generator;
std::random_shuffle(a.begin(), a.end(), generator);
}
我正在尝试使用g ++ -std = c ++ 0x编译此代码,接收以
结尾的巨大编译器转储/usr/include/c++/4.9.2/bits/random.h:546:7: note: candidate expects 0 arguments, 1 provided
任何正确的方式吗?
答案 0 :(得分:7)
您尝试使用的std::random_shuffle
超载需要&#34; RandomFunc&#34;:
函数对象在区间[0,n]中返回随机选择的可转换为
std::iterator_traits<RandomIt>::difference_type
的值,如果调用为r(n)
在C ++ 14中,std::random_shuffle
被弃用,而不是std::shuffle
,它使用生成器而不是&#34; RandomFunc&#34;。只需将功能更改为std::shuffle
。