gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 09:30:44 26 4
gpt4 key购买 nike

所以我有一个数组:

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

关于c++ - 在 C++ 中的 unordered_map 中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69406741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com