std :: map中的最后一个键

pet*_*hen 42 c++ iterator stdmap

我正在寻找std :: map的最高键值(由比较运算符定义).

这是保证

map.rbegin()->first
Run Code Online (Sandbox Code Playgroud)

(我在反向迭代器上有点不稳定,在std :: map的实现中有多少自由度)

如果没有,请告知.我无法改变数据结构.

Ste*_*sop 43

是.Map是一个已排序的容器,反向迭代器必须以反向(即递减)键的顺序返回元素.

[编辑:正如Charles Bailey在他的回答中指出的那样,如果存在,你的代码会给出最大的密钥- 即如果地图是非空的]


CB *_*ley 25

是的,但请记得检查一下map.rbegin() != map.rend().

  • ...而.empty()保证为O(1).(只是为了澄清安德烈亚斯所说的) (23认同)

Ala*_*lam 19

还有一种方法——

std::prev(map.end())->first;
Run Code Online (Sandbox Code Playgroud)


bir*_*sht 10

您可以使用以下方法: -

if(!map.empty())
    (--map.end())->first;
Run Code Online (Sandbox Code Playgroud)

  • 这不能保证有效。`std::prev(map.end())->first` 更安全。 (3认同)