I am looking for the highest key value (a defined by the comparison operator) of a std::map.
Is this guaranteed to be
map.rbegin()->first
?
(I am a bit shaky on reverse iterators, and how much freedom there is in the implementation of std::map)
If not, please advise. I cannot change the data structure.
From stackoverflow
-
Yes. Map is a sorted container, the reverse iterator must return the elements in reverse (i.e. decreasing) order of their keys.
[Edit: as Charles Bailey points out in his answer, your code gives the greatest key if it exists - i.e. if the map is non-empty]
-
Yes, but remember to check that
map.rbegin() != map.rend()
.peterchen : map.size()>0 should do it, too, right?dalle : !map.empty() is even clearer.Charles Bailey : They are all equivalent checks.Andreas Magnusson : map::size() *could* be O(N)...Thomas : ... while .empty() is guaranteed to be O(1). (just to clarify what Andreas said)
0 comments:
Post a Comment