4 Stimmen

Wie kann ich die Reihenfolge einer std::map ändern, um sie umzukehren?

Weiß jemand, ob es eine Möglichkeit gibt, die Kartenreihenfolge von weniger auf "mehr" zu ändern?

Zum Beispiel:

Es gibt eine map<string, int> genannt. test . Ich füge einige Einträge hinzu:

test["b"] = 1;
test["a"] = 3;
test["c"] = 2;

Innerhalb der Karte lautet die Reihenfolge (a, 3)(b, 1)(c, 2) .

Ich möchte, dass es so ist (c, 2)(b, 1)(a, 3) .

Wie kann ich das auf einfache Art und Weise tun?

10voto

pmr Punkte 56454

Durch die Verwendung von std::greater als Ihren Schlüssel anstelle von std::less .

z.B..

std::map< std::string, int, std::greater<std::string> > my_map;

Véase die Referenz

3voto

beerboy Punkte 1314

Wenn Sie eine bestehende Map haben und nur eine Schleife über die Elemente einer Map in umgekehrter Richtung machen wollen, verwenden Sie einen Reverse-Iterator:

// This loop will print (c, 2)(b, 1)(a, 3)

for(map< string, int >::reverse_iterator i = test.rbegin(); i != test.rend(); ++i)
{
    cout << '(' << i->first << ',' << i->second << ')';
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X