如何将标准生成器传递给STL函数?

who*_*ver 4 c++ stl

#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)

有没有正确的方法?

chr*_*ris 7

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.