数値順で値を並べ替えることができるのはthisです。STL Setが同じ値を持つペアを上書きするのはなぜですか
しかし、同じジョブの設定を使用すると失敗します。
次のテストで実行#include <set>
#include <functional>
#include <iostream>
using namespace std;
typedef pair<string, int> Pair;
typedef function<bool(Pair, Pair)> Comparator;
Comparator DescendingSortComparator = [](Pair pair1, Pair pair2) {
return pair1.second > pair2.second;
};
void SortHashTableByValueDescending(unordered_map<string, int> hashTable) {
set<Pair, Comparator> orderedSet(hashTable.begin(), hashTable.end(), DescendingSortComparator);
for (auto element : orderedSet)
cout << element.first << ": " << element.second << endl;
}
:
void Test_SortMap()
{
unordered_map<string, int> CountTable;
CountTable["word"] = 1;
CountTable["spark"] = 15;
CountTable["the"] = 2;
CountTable["mail"] = 3;
CountTable["info"] = 3;
CountTable["sandwich"] = 15;
SortHashTableByValueDescending(CountTable);
}
は、次のような出力をyiels:
spark: 15
info: 3
the: 2
word: 1
ができ、誰くださいなぜ(おそらく)ペアを同じ値で上書きするのか教えてください。このようなペアのキーは、とにかく区別されます。 cppreference.comから
それらを維持したい場合には、これらの2つの要素が同じだと思うので – Danh
'std :: sort'を使わないのはなぜですか? – Danh
コンパレータは 'unordered_map'の値だけを扱いますが、キーは無視します。 – ks1322