Frage: Wie kann ich eine std::map mühelos nach ihrem Wert sortieren? Werte?
Antwort:
Traditioneller Ansatz (vor C 11)
Vor der Einführung von C 11, Das Sortieren einer Karte nach Werten erforderte einen Zwischenschritt der Konvertierung der std::map in ein std::pair. Dies beinhaltete die Verwendung einer benutzerdefinierten Sortierfunktion und die manuelle Angabe der Vergleichsparameter.
C 11-Ansatz
Mit der Einführung von C 11 entstand eine sauberere Lösung. Das folgende Code-Snippet zeigt, wie:
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; }
Diese Funktion dreht die Schlüssel-Wert-Paare innerhalb der Karte effektiv um, sodass Sie über die sortierten Werte iterieren können.
Generische assoziative Quelle (C 11 und höher)
Für mehr Flexibilität kann eine generische Version der Spiegelfunktion verwendet werden erstellt, sodass sie mit jedem assoziativen Container funktionieren kann:
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; }
Diese Funktion akzeptiert jede assoziative Containerklasse als Eingabe, sodass sie bequem sowohl mit std::map als auch mit std::unordered_map verwendet werden kann.
Das obige ist der detaillierte Inhalt vonWie kann ich eine std::map nach Wert in C sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!