将结构体存入vector容器,按照自定义排序规则进行排序。
存入时,要先对结构体赋值,再存结构体。
#include<bits/stdc++.h>
using namespace std;
struct number {
int x;
int count;
} ;
bool cmp(number a,number b) {
if(a.count>b.count) return true;
else if(a.count==b.count&&a.x<b.x) return true;
else return false;
}
int main() {
int n;
cin>>n;
int a[1001]= {0},tmp;
for(int i=0; i<n; i++) {
cin>>tmp;
a[tmp]++;
}
vector<number> vnum;
for(int i=0; i<1001; i++) {
number num;
if(a[i]!=0) {
num.x=i;
num.count=a[i];
vnum.emplace_back(num);
}
}
sort(vnum.begin(),vnum.end(),cmp);
for(auto it=vnum.begin(); it!=vnum.end(); it++)
cout<<it->x<<" "<<it->count<<endl;
return 0;
}