web-dev-qa-db-fra.com

Dernière clé dans un std :: map

Je recherche la valeur de clé la plus élevée (définie par l'opérateur de comparaison) d'un std :: map.

Est-ce garanti

map.rbegin()->first

?

(Je suis un peu fragile sur les itérateurs inversés et sur la liberté de mise en œuvre de std :: map)

Sinon, veuillez en informer. Je ne peux pas changer la structure des données.

43
peterchen

Oui. La carte est un conteneur trié, l'itérateur inversé doit retourner les éléments dans l'ordre inverse (c'est-à-dire décroissant) de leurs clés.

[Edit: comme le souligne Charles Bailey dans sa réponse, votre code donne la plus grande clé si elle existe - c'est-à-dire si la carte n'est pas vide]

45
Steve Jessop

Oui, mais n'oubliez pas de vérifier que map.rbegin() != map.rend().

26
CB Bailey

Vous pouvez utiliser la méthode suivante: -

if(!map.empty())
    (--map.end())->first;
12
birubisht