下面代码利用对vector<int> in 中的序列按照数字个数多少进行排序,个数相等的不改变原序列顺序
注意:unorder_map是乱序,不会按照插入元素序列排序,所以第二个程序是之前犯得错误
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
bool compare_map_index(const pair<int, pair<int, int>> &a, const pair<int, pair<int, int>> &b) {
return a.second.first < b.second.first;
}
bool compare_map_times(const pair<int, pair<int, int>> &a, const pair<int, pair<int, int>> &b) {
return a.second.second > b.second.second;
}
int main() {
vector<int> in{ 10000,20000,40000,30000,30000,30000,40000,20000,50000,50000,50000,50000,60000,60000,60000,70000,80000,90000,100000 };
map<int, pair<int, int>> a; //此处使用pair是解决的小技巧
for (int i = 0; i < in.size(); ++i) {
auto ret = a.insert({ in[i],{i,0}