C++ std::map-Elemente in absteigender Reihenfolge der Schlüssel
Wie cal benutze ich std::map container mit Schlüssel-Wert in absteigender Reihenfolge.
Wenn, als Beispiel, legen Sie die folgenden Elemente:
[2 , 5]
[1 , 34]
[3 , 67]
Werden Sie bestellt werden, die in der Karte wie:
position 0: [1, 34]
position 1: [2, 5]
position 2: [3, 67]
Kann ich Durchlaufen und die Karte Umgekehrt, aber nehmen wir an, das nächste mal bin ich einfügen [-1 , 60]. Wird es an die erste Stelle gesetzt?
InformationsquelleAutor der Frage Sigstop | 2014-03-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie eine benutzerdefinierte Komparator, wenn die Standard-Bestellung nicht für Sie tun.
Sie übergeben Sie als Dritten parameter template angegeben wurde ( das ist in der Regel standardmäßig auf
std::less<KeyType>
).In Ihrem Fall können Sie
std::greater
:Beispiel-code:
Ausgabe:
InformationsquelleAutor der Antwort jrok
std::map
ist bereits sortiert, so brauchen Sie nur zu durchqueren, die Karte mit einemreverse_iterator
.Einer Karte, ist aber nicht ein array. Es gibt keine solche Sache wie "die n-te position" in einer Karte. (
std::map
wird meist realisiert durch eine Art von binären Suchbaum.) Wenn Sie absolut zwangsläufig angeben müssen, um manuell, dann mit einemstd::vector<std::pair>
.InformationsquelleAutor der Antwort user3447428