按姓名从小到大排序,姓名一样,按年龄从小到大排序
(1)定义结构体
struct student{
string name;//姓名
int age;//年龄
};
(2) 自定义排序
int comp(const student &s1,const student &s2){//自己定义的排序规则
if(s1.name==s2.name){
return s1.age<s2.age;
}
else{
return s1.name<s2.name;
}
}
(3)使用sort
student s[100];
sort(s,s+3,comp);
完整代码:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
//结构体排序一
//按姓名从小到大排序,姓名一样,按年龄从小到大排序
struct student{
string name;//姓名
int age;//年龄
};
int comp(const student &s1,const student &s2){//自己定义的排序规则
if(s1.name==s2.name){
return s1.age<s2.age;
}
else{
return s1.name<s2.name;
}
}
int main(){
//结构体数组排序一
student s[100];
s[0].name="zhangsan";s[0].age=18;
s[1].name="zhangsan";s[1].age=19;
s[2].name="lisi";s[2].age=20;
sort(s,s+3,comp);//左闭右开,所以是对s[0]到s[2]排序
for(int i=0;i<3;i++){
cout<<s[i].name<<" "<<s[i].age<<endl;
}
return 0;
}
更多方法参考:https://blog.csdn.net/qq_40828914/article/details/80670151