#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);
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用g ++ -std = c ++ 0x编译此代码,接收以.结尾的巨大编译器转储
/usr/include/c++/4.9.2/bits/random.h:546:7: note: candidate expects 0 arguments, 1 provided
Run Code Online (Sandbox Code Playgroud)
有没有正确的方法?
std::random_shuffle您尝试使用的重载需要"RandomFunc":
函数对象
std::iterator_traits<RandomIt>::difference_type如果作为r(n)调用,则在区间[0,n)中返回随机选择的convertible类型的值
在C++ 14中,std::random_shuffle不赞成使用std::shuffle生成器,而不是"RandomFunc".只需将功能更改为std::shuffle.