首页 > 技术文章 > 自定义数据类型使用sort排序

dayq 2019-11-26 23:02 原文

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 struct tree{
 5     string zfc;
 6     int a;
 7     /*bool operator<(const tree &a) 
 8     {
 9         if(zfc<a.zfc)
10         return true;
11         else if(zfc==a.zfc)
12         {
13             return this->a<a.a;
14         }
15         return false;
16     }*/
17     /* 这里的const 和&都可以省略*/
18 };
19 /* 随便写在里面外面,加不加const和&都不影响sort排序*/
20 bool operator<(tree a,tree b)
21 {
22     if(a.zfc<b.zfc)
23     return true;
24     else if(a.zfc==b.zfc)
25     {
26         return a.a<b.a;
27     }
28     return false;
29 }
30 bool cmp(tree a,tree b)
31 {
32     if(a.zfc<b.zfc)
33     return true;
34     else if(a.zfc==b.zfc)
35     {
36         return a.a<b.a;
37     }
38     return false;
39 } 
40 int main()
41 {
42     tree t[3];
43     t[0].zfc="hh";
44     t[0].a=1;
45     t[1].zfc="xx";
46     t[1].a=2;
47     t[2].zfc="hh";
48     t[2].a=0;
49 //    sort(t,t+3);
50     sort(t,t+3,cmp);
51     /* 使用sort既可以重载元素类型的比较符号,也可以自己写新的排序函数*/
52     for(int i=0;i<3;i++)
53     {
54         cout<<t[i].zfc<<" "<<t[i].a<<endl;
55     }
56 }

3个比较方式,随便一个都可以。

推荐阅读