我正在寻找 std::map 的最高键值(由比较运算符定义)。
这是保证
map.rbegin()->first
?
(我对反向迭代器有点动摇,在 std::map 的实现中有多少自由)
如果不是,请指教。我无法更改数据结构。
是的。Map 是一个排序容器,反向迭代器必须以它们的键的反向(即递减)顺序返回元素。
[编辑:正如查尔斯贝利在他的回答中指出的那样,如果它存在,你的代码给出了最大的键- 即如果地图是非空的]
是的,但记得检查一下map.rbegin() != map.rend()
。
您可以使用以下方法:-
if(!map.empty())
(--map.end())->first;
还有一种方法——
std::prev(map.end())->first;
Map 按排序顺序存储键值对,因此我们可以通过以下方式访问最后一个元素:-
auto it=m.end();
it--;
int element=it->first;