九度OJ1061成绩排序

九度OJ的一个网友遇到一个小问题,随便看了看找了出来,学ACM好多代码是C/C++混编的,其实对C++并不是很了解,有时间看看重载大于号的机制到底是怎么回事

先学会怎么用。

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

class StuInfo{
    public:
        string strName;
        int nAge;
        int nScore;
        bool operator > (  const StuInfo &a ){
            if( this->nScore > a.nScore )return true;
            else if( this->nScore < a.nScore )return false;
            else if( this->strName > a.strName )return true;
            else if(this ->strName < a.strName )return false;
            else if( this->nAge > a.nAge )return true;
            else return false;
        };
};

vector<StuInfo> StuList;
int cmp( StuInfo a, StuInfo b ){
    if ( a > b )return 0;
    else return 1;
}

int main( ){
    int N;
    StuInfo buffer;
    while( cin >> N ){
        StuList.clear();
        for( int i = 0; i < N; i++ ){
            cin >> buffer.strName >> buffer.nAge >> buffer.nScore;
            StuList.push_back( buffer );
        }
        sort( StuList.begin(), StuList.end(), cmp );
        for( vector<StuInfo>::iterator iter = StuList.begin(); iter < StuList.end(); ++ iter ){
            cout << (*iter).strName << ' ' << (*iter).nAge << ' ' << (*iter).nScore <<endl;
        }
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值