CCF 数字排序

C++ map 的学习链接:
https://blog.csdn.net/livecoldsun/article/details/26285749

cin.ignore():
https://blog.csdn.net/wxbmelisky/article/details/48596881
我们可以想到用cin.ignore()函数,将cin中提取的 ‘\n’ 忽略掉。

vector用法:
可以理解成动态数组,动态占用空间,动态释放空间。
https://www.cnblogs.com/AKMer/p/9890052.html
https://www.cnblogs.com/god-for-speed/p/10830846.html

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
typedef pair<int,int> PAIR;
bool com(const PAIR &l,const PAIR &r){
    if(l.second==r.second){
        return l.first<r.first; //次数出现相同时,按从小到大 
    }else{
        return l.second>r.second;//次数出现多的排在前 
    }
}
int main(){
    int len;
    map<int,int> container;
    cin>>len;
    cin.ignore();
    for(int i=0; i<len; i++){
        int tem;
        cin>>tem;
        ++container[tem];
    }//map对value排序,可将其转成vector以pair类型存储,再用sort进行排序
    vector<PAIR> vec(container.begin(),container.end());
    sort(vec.begin(),vec.end(),com); //com是自定义的比较方式 
    for(int j=0; j<vec.size(); j++){
        cout<<vec[j].first<<" "<<vec[j].second<<endl;
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值