2008-11-14 6 views
26

Je cherche la valeur de clé la plus élevée (définie par l'opérateur de comparaison) d'une carte std :: map.Dernière clé d'un fichier std :: map

cela est garanti d'être

map.rbegin()->first 

?

(je suis un peu fragile sur itérateurs à rebours, et combien la liberté il y a dans la mise en œuvre de std :: carte)

Dans le cas contraire, s'il vous plaît conseiller. Je ne peux pas changer la structure de données.

Répondre

32

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

[Edit: Charles Bailey souligne dans sa réponse, votre code donne la plus grande clé si elle existe - à savoir si la carte est non vide]

20

Oui, mais souvenez-vous de vérifier que map.rbegin() != map.rend().

+0

map.size()> 0 devrait le faire, aussi, non? – peterchen

+5

! Map.empty() est encore plus clair. – dalle

+0

Ce sont tous des contrôles équivalents. –

5

Vous pouvez utiliser la méthode suivante: -

if(!map.empty()) 
    (--map.end())->first; 
Questions connexes