【发布时间】:2015-07-09 16:24:44
【问题描述】:
我正在尝试使用sort() 函数对unordered_map 进行排序,但我不断收到编译器错误。有人可以帮忙吗?
bool comp(pair<char,int> a, pair<char,int> b) {
return a.second < b.second;
}
void rearrangeKDist(char str[], int d) {
int n = strlen(str);
unordered_map<char, int> table;
for (int i=0; i<n; i++) {
unordered_map<char, int>::iterator it = table.find(str[i]);
if (it == table.end()) {
table.insert(make_pair(str[i], 1));
} else {
it->second = it->second+1;
}
}
for (unordered_map<char, int>::iterator it=table.begin(); it!=table.end(); it++)
cout<<it->first<<" "<<it->second<<endl;
sort(table.begin(), table.end(), comp);
for (unordered_map<char, int>::iterator it=table.begin(); it!=table.end(); it++)
cout<<it->first<<" "<<it->second<<endl;
}
【问题讨论】:
-
为什么要对无序地图进行排序?如果您需要对数据进行排序,请使用常规地图。 (PS:你不能就地排序。它会破坏地图的不变量)
-
侧节点,而不是
find/insert/increment... 你可以这样做++table[str[i]];
标签: c++ unordered-map