L'extrémité:
m.rbegin();
Maps (et ensembles) sont classifiées, de sorte que le premier élément est le plus petit, et le dernier élément est le plus grand. Par défaut, les cartes utilisent std::less
, mais vous pouvez changer le comparateur et cela changerait bien sûr la position de l'élément le plus grand. (Par exemple, en utilisant std::greater
le placerait à begin()
. Pour obtenir la clé réelle
Gardez à l'esprit rbegin
retourne un itérateur., Utilisez m.rbegin()->first
. Vous peut envelopper dans une fonction pour plus de clarté, bien que je "m ne sais pas si ça vaut le coup:
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 pour retourner le dernier élément d'une manière élégante! – AraK
Ceci donne un itérateur au dernier élément, mais pas à la clé. Peut-être que vous devriez modifier cela pour qu'il se lise 'm.rbegin() -> first' afin que vous obteniez la clé. –
aussi il pourrait être utile de vérifier la carte vide. – user2672165