我正在阅读以下内容:http : //www.cplusplus.com/reference/algorithm/random_shuffle/,想知道是否可以对一个int元素数组进行random_shuffle。这是我的代码
#include <iostream> #include <algorithm> using namespace std; int main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; cout << a << endl << endl; random_shuffle(a[0],a[9]); cout<<a; }
我收到此错误:
error C2893: Failed to specialize function template 'iterator_traits<_Iter>::difference_type *std::_Dist_type(_Iter)'.
我的问题是:
是否可以使用洗牌int数组random_shuffle。如果可以,我想学习如何做。
random_shuffle
是否random_shuffle只适用于模板?
我的错误是什么意思?
您需要传递指向a[0]和的指针,而a[10]不是元素本身:
a[0]
a[10]
random_shuffle(&a[0], &a[10]); // end must be 10, not 9
在C ++ 11中,您可以使用std::begin和std::end:
std::begin
std::end
random_shuffle(std::begin(a), std::end(a));