自定义比较函数,重定义运算符

竞赛技巧

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;
    }
}
全部评论

相关推荐

点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务