El final:
m.rbegin();
Maps (y juegos) están ordenadas, por lo que el primer elemento es el más pequeño, y el último elemento es el más grande. De forma predeterminada, los mapas usan std::less
, pero puede cambiar el comparador y esto, por supuesto, cambiaría la posición del elemento más grande. (Por ejemplo, usando std::greater
lo colocaría en begin()
.
Tenga en cuenta rbegin
devuelve un iterador. Para obtener la clave real, utilice m.rbegin()->first
. Usted puede envolverlo en una función para mayor claridad, aunque yo "m no estoy seguro si vale la pena:
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 para devolver el último elemento de una manera elegante! – AraK
Esto produce un iterador para el último elemento, pero no para la clave. Tal vez deberías modificar esto para que diga 'm.rbegin() -> first' para que obtengas la clave. –
también podría valer la pena verificar el mapa vacío. – user2672165