Std::map nach Wert sortieren
Das Sortieren einer std::map nach Wert erfordert einen alternativen Ansatz zur Standardfunktion sort() Sortiert Elemente nur nach Schlüssel. Um dies zu erreichen, ziehen Sie die folgende Lösung in Betracht:
Schlüssel und Wert umdrehen
Erstellen Sie mit der folgenden Funktion eine neue Multimap, die die Schlüssel- und Wertepaare der ursprünglichen Karte umdreht :
template<typename A, typename B> std::multimap<B,A> flip_map(const std::map<A,B> &src) { std::multimap<B,A> dst; std::transform(src.begin(), src.end(), std::inserter(dst, dst.begin()), flip_pair<A,B>); return dst; }
Verwendung:
Nach der Erstellung der Originalkarte (z. B. std::map
std::multimap<double, int> dst = flip_map(src);
Generische assoziative Quelle
Diese Lösung kann verallgemeinert werden, um mit jedem assoziativen Container mithilfe verschiedener Vorlagen zu arbeiten:
template<typename A, typename B, template<class,class,class...> class M, class... Args> std::multimap<B,A> flip_map(const M<A,B,Args...>&src) { std::multimap<B,A> dst; std::transform(src.begin(), src.end(), std::inserter(dst, dst.begin()), flip_pair<A,B>); return dst; }
Dies funktioniert für sowohl std::map als auch std::unordered_map als Quelle des Flip.
Das obige ist der detaillierte Inhalt vonWie kann ich eine std::map nach Wert und nicht nach Schlüssel sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!