sort的格式:
sort(数组起始指针,数组尾指针,排序规则);数组起始指针,数组尾指针是左闭右开
sort(a,a+n,cmp)
想要对结构体排序的几种方法:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
//结构体排序一 ----定义cmp函数
//按姓名从小到大排序,姓名一样,按年龄从小到大排序
struct student{
string name;
int age;
};
int cmp(const student &s1,const student &s2){//自己定义的排序规则
if(s1.name==s2.name)
return s1.age<s2.age;
return s1.name<s2.name;
}
//结构体排序二 --- 结构体内重载 <
//按姓名从小到大排序,姓名一样,按年龄从小到大排序
struct student2{
string name;
int age;
bool operator < (const student2 & s2) const {//符号重载
if(name==s2.name)
return age<s2.age;
return name<s2.name;
}
};
int main(){
int a[];
sort(a,a+7);//默认升序
sort(a,a+7,less<int>());//系统的升序
sort(a,a+7,greater<int>());//系统的降序
//结构体数组排序一 加入cmp函数,
student s[100];
sort(s,s+3,cmp);//左闭右开,[0,3)的定义域
//结构体数组排序二:符合重载 (不需要cmp函数)
student2 s2[100];
sort(s2,s2+3);//左闭右开, [0,2)
return 0;
}