random_shuffle(beg,end)和random_shuffle(beg,end,op)的特点
1:迭代器类型:随机存取迭代器
2:返回类型:void
3:算法功能:将[beg,end)区间内的元素序列打乱
4:复杂度:线性复杂度
#include<iostream>
#include<vector>
#include<functional>
#include<windows.h>
using namespace std;
struct myrand
{
int operator()(int max)
{
double tmp;
srand(GetTickCount64());
tmp = static_cast<double>(rand()) / static_cast<double>(RAND_MAX);
return static_cast<int>(tmp*max);
}
};
int main()
{
vector<int>coll = { 1,2,3,4,5,6,7,8,9,10};
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));
cout << endl;
random_shuffle(coll.begin(), coll.end(), myrand());
copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
cout << endl;
}
这里推荐带op版本,不带op版本我们发现是伪打乱(多次运行打乱后结果一样)