自定义比较函数,重定义运算符
竞赛技巧
https://ac.nowcoder.com/acm/problem/15056
使用语言:c++
思路:1.三个数据为一组可以想到定义结构体。2.比较大小可以想到用c++语言的sort函数。
sort函数如何使用:可以用自定义比较函数,重定义运算符 来让sort函数进行自定义的排序。
自定义比较函数:直接创建一个比较函数。且使用方法如下:
bool comp(unit a,unit b){ if(a.hour<b.hour)return true; else if(a.hour==b.hour){ if(a.minute<b.minute)return true; else if(a.minute==b.minute){ if(a.second<b.second)return true; } } return false; } //sort(times,times+N,comp);
重定义运算符:在定义结构体里面就定义。
struct unit{ int hour,minute,second; bool operator <(unit b){ if(hour<b.hour)return true; else if(hour==b.hour){ if(minute<b.minute)return true; else if(minute==b.minute){ if(second<b.second)return true; } } return false; } }; //sort(times,times+N);
最终代码如下:
#include "stdio.h" #include "algorithm" #include "iostream" using namespace std; struct unit{ int hour,minute,second; bool operator <(unit b){ if(hour<b.hour)return true; else if(hour==b.hour){ if(minute<b.minute)return true; else if(minute==b.minute){ if(second<b.second)return true; } } return false; } }; int main() { int N,i; cin>>N; unit times[N]; for(i=0;i<N;i++){ cin>>times[i].hour>>times[i].minute>>times[i].second; } sort(times,times+N); for(i=0;i<N;i++){ cout<<times[i].hour<<" "<<times[i].minute<<" "<<times[i].second<<endl; } }