Com*_*erd 18 c++ algorithm shuffle
我正在阅读这篇文章:http: //www.cplusplus.com/reference/algorithm/random_shuffle/,并想知道是否有可能对random_shuffle一个int元素数组.这是我的代码
#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;
}
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
error C2893: Failed to specialize function template
'iterator_traits<_Iter>::difference_type *std::_Dist_type(_Iter)'.
Run Code Online (Sandbox Code Playgroud)
我的问题是:
是否可以使用随机数组进行洗牌random_shuffle.如果是,我想学习如何做到这一点.
是否random_shuffle只适用于模板?
我的错误是什么意思?
das*_*ght 44
你需要传递指针,a[0]而a[10]不是元素本身:
random_shuffle(&a[0], &a[10]); // end must be 10, not 9
Run Code Online (Sandbox Code Playgroud)
在C++ 11中,您可以使用std::begin和std::end:
random_shuffle(std::begin(a), std::end(a));
Run Code Online (Sandbox Code Playgroud)