Das Ende:
m.rbegin();
Maps (und Mengen) werden sortiert, so dass das erste Element ist die kleinste, und das letzte Element die größte ist. Standardmäßig verwenden Karten std::less
, aber Sie können den Vergleicher wechseln, und dies würde natürlich die Position des größten Elements ändern. (Zum Beispiel: std::greater
Verwendung wäre es bei begin()
platzieren.
Beachten Sie rbegin
einen Iterator zurück. Um den eigentlichen Schlüssel zu erhalten, verwenden m.rbegin()->first
. Sie könnte es einpacken in eine Funktion für Klarheit, obwohl ich "m ob es sich lohnt es sich nicht sicher:
template <typename T>
inline const typename T::key_type& last_key(const T& pMap)
{
return pMap.rbegin()->first;
}
typedef std::map</* types */> map_type;
map_type myMap;
// populate
map_type::key_type k = last_key(myMap);
+1 für auf elegante Weise das letzte Element der Rückkehr! – AraK
Dies ergibt einen Iterator für das letzte Element, nicht jedoch für den Schlüssel. Vielleicht solltest du das so optimieren, dass es 'm.rbegin() -> first' liest, damit du den Schlüssel bekommst. –
könnte es auch wert sein, nach leeren Karten zu suchen. – user2672165