59

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

这是保证

map.rbegin()->first

?

(我对反向迭代器有点动摇,在 std::map 的实现中有多少自由)

如果不是,请指教。我无法更改数据结构。

4

5 回答 5

60

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

[编辑:正如查尔斯贝利在他的回答中指出的那样,如果它存在,你的代码给出了最大的键- 即如果地图是非空的]

于 2008-11-14T10:45:12.080 回答
31

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

于 2008-11-14T11:28:03.320 回答
17

您可以使用以下方法:-

if(!map.empty())
    (--map.end())->first;
于 2016-11-22T04:56:15.780 回答
7

还有一种方法——

std::prev(map.end())->first;
于 2020-11-15T04:06:22.640 回答
0

Map 按排序顺序存储键值对,因此我们可以通过以下方式访问最后一个元素:-

auto it=m.end();
it--;
int element=it->first;
于 2021-11-12T11:29:13.917 回答