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;
}