Heim > Backend-Entwicklung > C++ > Wie kann ich eine std::map nach Wert statt nach Schlüssel sortieren?

Wie kann ich eine std::map nach Wert statt nach Schlüssel sortieren?

DDD
Freigeben: 2024-12-25 05:22:13
Original
335 Leute haben es durchsucht

How Can I Sort an std::map by Value Instead of Key?

Sortieren einer std::map nach Wert

Das Sortieren einer std::map nach Wert statt nach Schlüssel kann komplexer sein als das Sortieren nach Schlüssel. Hier ist eine ausführliche Analyse des Problems und eine Lösung:

Lösung 1: Verwenden einer Multimap

Um eine std::map nach Wert zu sortieren, können wir erstellen eine Multimap mit den Werten als Schlüsseln und den Schlüsseln als Werten. Dadurch können wir nach den Werten sortieren, wie im folgenden Beispiel:

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;
}
Nach dem Login kopieren

Indem wir die Original-Map durchlaufen und die gespiegelten Paare in die Multimap einfügen, kehren wir im Wesentlichen die Schlüssel-Wert-Beziehung um und können dann Sortieren Sie nach den neuen Schlüsseln (den ursprünglichen Werten).

Lösung 2: Generische assoziative Quelle (C 11 Erforderlich)

Für alternative assoziative Container (z. B. std::unordered_map) können wir die folgende generische Lösung verwenden:

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;
}
Nach dem Login kopieren

Diese Überladung funktioniert für beide std::map und std::unordered_map unter Verwendung variadischer Vorlagen, um verschiedene assoziative Containertypen zu verarbeiten.

Das obige ist der detaillierte Inhalt vonWie kann ich eine std::map nach Wert statt nach Schlüssel sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage