一尘不染

是否可以random_shuffle一个int元素数组?

algorithm

我正在阅读以下内容: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)'.

我的问题是:

  1. 是否可以使用洗牌int数组random_shuffle。如果可以,我想学习如何做。

  2. 是否random_shuffle只适用于模板?

  3. 我的错误是什么意思?


阅读 248

收藏
2020-07-28

共1个答案

一尘不染

您需要传递指向a[0]和的指针,而a[10]不是元素本身:

random_shuffle(&a[0], &a[10]); // end must be 10, not 9

在C ++ 11中,您可以使用std::beginstd::end

random_shuffle(std::begin(a), std::end(a));
2020-07-28