#include<iostream>
#include<algorithm>
#include<vector>
#include<ctime>
using namespace std;
bool cmp(int a,int b) // a是否应该排在b 的前面
{
return a>b; //如果a>b, a就应该排在b的前面
}
//sort 没有比较函数,需要自己传一个
struct rec
{
int x,y;
bool operator<(const rec &t) const //当前这个x(元素) 能不能排在 t 的前面
{
return x<t.x; //如果x <t.x ,x就排在t的前面
}
}b[5];
/* bool cmp1(rec a,rec b)
{
return a.x<b.x;
}*/
//如果不想定义比较函数
//也可以在结构体里重载小于号
int main()
{
vector<int> a({1,1,2,3,4,5});
//随机种子
srand(time(0));
//随机打乱数据
random_shuffle(a.begin(),a.end());
for(auto x:a) cout<<x<<" ";
cout<<endl;
//sort函数 把数据排序 重要!!!!
sort(a.begin(),a.end());//从小到大排序
for(auto x:a) cout<<x<<" ";
cout<<endl;
sort(a.begin(),a.end(),greater<int>());//从大到小排序
for(auto x:a) cout<<x<<" ";
cout<<endl;
//想按自己的想法排序 自己定义一个函数
sort(a.begin(),a.end(),cmp);//再传一个参数进来
for(auto x:a) cout<<x<<" ";
cout<<endl;
//sort 还可以排结构体
for(int i=0;i<5;i++)
{
b[i].x=-i;
b[i].y=i;
}
for(int i=0;i<5;i++) printf("(%d,%d) ",b[i].x,b[i].y);
cout<<endl;
sort(b,b+5,cmp1);
for(int i=0;i<5;i++) printf("(%d,%d) ",b[i].x,b[i].y);
//在结构体里重载小于号
sort(b,b+5);
for(int i=0;i<5;i++) printf("(%d,%d) ",b[i].x,b[i].y);
}