错误'无法匹配调用vector <int> normal_iterator <int *,vector <int =“”>&gt; :: difference_type)'

时间:2015-05-10 21:53:39

标签: c++ vector iterator shuffle

我正在尝试使用这个vector.h函数:

 random_shuffle(s.begin()+from+i,s.begin()+to,s);

发生此错误:

c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_algo.h|5255|error: no match for call to '(std::vector<int>) (__gnu_cxx::__normal_iterator<int*, std::vector<int> >::difference_type)'|

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

std::random_shuffle的第三个参数(假设您正在讨论,如果没有,请澄清您的问题)必须是

  

如果调用std::iterator_traits<RandomIt>::difference_type

,函数对象会在[0,n)区间内随机选择可转换为r(n)的类型值

(来自here),而不是矢量。您可能想要使用函数的两个参数变体:

random_shuffle(s.begin()+from+i,s.begin()+to);

此外,请注意std::random_shuffle已过时。您应该使用std::shuffle代替。