c++ - 在 C++ 中的 unordered_map 中排序

所以我有一个数组:

arr[] = {5, 2,4,2,3,5,1};

如何按照它们在 unordered_map 中出现的次数按此顺序插入它们?

#include<bits/stdc++.h>

using namespace std;

void three_freq(int arr[], int n){
    unordered_map<int, int> m;

    for(int i=0;i<n;i++){
        m[arr[i]]++;
    }

    for(auto itr = m.begin(); itr != m.end(); itr++){
        cout<<itr->first<<":"<<itr->second<<"\n";
    }

}

int main(){
    int arr[] = {5, 2,4,2,3,5,1};
    int n = sizeof(arr)/ sizeof(arr[0]);
    three_freq(arr, n);
    return 0;
}

使用上面的代码,我得到的输出是:

1:1
3:1
4:1
5:2
2:2

但我希望输出与元素在数组中出现的顺序相同。 示例:

5:2
2:2
4:1
3:1
1:1

最佳答案

如果您不关心效率(那么多),那么您可以只更改打印输出的 for 循环。

for(int i=0; m.size(); i++) {
   auto it = m.find(arr[i]); 
   if (it != m.end()) {
      cout<<arr[i]<<":"<<it->second<<"\n";
      m.erase(it);
    }
} 

https://stackoverflow.com/questions/69406741/

相关文章:

reactjs - 保存我的代码时 Eslint 配置错误

c# - 如何在 dotnet 中将 ""解析为 long ("0")

kotlin-coroutines - Kotest 与 kotlinx-coroutines-te

list - Groovy:比较列表忽略其中元素的顺序

python - 使用 matplotlib 3.3+ 更改颜色条限制以更改比例

r - 根据 R 中表格的列数过滤列表

reactjs - 路由在 webpack + react 项目中不起作用

python - 在不添加额外列的情况下创建颜色基于年份的散点图

css - Material-UI 下拉列表在对话框中溢出

nestjs - 嵌套类验证器 minDate 即使日期更大也会抛出错误