Я пытаюсь сортировать unordered_map
с помощью функции sort()
, но я продолжаю получать ошибку компилятора. Может ли кто-нибудь помочь?sort an unordered_map using sort()
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: вы не сможете сортировать его на месте, это сломает инварианты карты) – Borgleader
Боковой узел, вместо 'find' /' insert'/increment ... вы могли бы просто сделать '++ table [str [i]]; ' – Barry
Возможный [дубликат] (http://stackoverflow.com/questions/24212356/why-stl-unordered-map-and-unordered-set-cannot-be-sorted-by-stl -алгоритмы)/мое объяснение [здесь] (http://stackoverflow.com/questions/24212356/why-stl-unordered-map-and-unordered-set-cannot-be-sorted-by-stl-algorithms/30971939# 30971939) –