我正在尝试使用这个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)'|
有什么想法吗?提前谢谢!
答案 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
代替。