Конец:
m.rbegin();
Карты (и наборы) отсортированы, поэтому первый элемент самый маленький, а последний элемент самый большой. По умолчанию карты используют std::less
, но вы можете переключить компаратор, и это, конечно, изменит положение самого большого элемента. (Например, использование std::greater
поместит его в begin()
.
Имейте в виду, rbegin
возвращает итератор. Чтобы получить фактический ключ, используйте m.rbegin()->first
. Вы могли бы обернуть это в функцию для ясности, хотя я не уверен, стоит ли это того:
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);