头文件:algorithm
std::sort(first,last,cmp);
使用的范围是[first,last)
省略 cmp,使用 sort(first,last), 则默认从 小到大排序。
使用 sort(first,last, greater<T>() ), 则 从 大到小排序。
如果是结构体或者自定义排序规则,则需要自定义cmp 函数。
例如:
定义结构体:
struct stu
{
int num;
int grade;
};
单条件比较函数:
bool compare(const stu& st1,const stu& st2)
{
return st1.grade>st2.grade;
}
多条件比较函数,按照结构体变量中的grade值从大到小排序,如果有grade值相同,按照num值小的在前
bool compare(const stu& st1,const stu& st2)
{
if(st1.grade>st2.grade)
return true;
else if(st1.grade==st2.grade&&st1.num<st2.num)
return true;
else
return false;
}
调用sort:
vector<stu>v;
sort(v.begin(),v.end(),compare);
注意,自定义cmp时:
相等返回 false
相等返回 false
相等返回 false
cmp函数的含义,如果返回值是 True,表示 要把 序列 (X,Y),X放Y前。