Последний ключ в std :: map - PullRequest
       12

Последний ключ в std :: map

35 голосов
/ 14 ноября 2008

Я ищу самое высокое значение ключа (определенное оператором сравнения) std :: map.

Это гарантированно будет

map.rbegin()->first

?

(Я немного неуверен в обратных итераторах, и сколько свободы есть в реализации std :: map)

Если нет, пожалуйста, сообщите. Я не могу изменить структуру данных.

Ответы [ 3 ]

38 голосов
/ 14 ноября 2008

Да. Карта - это отсортированный контейнер, обратный итератор должен возвращать элементы в обратном (т.е. убывающем) порядке их ключей.

[Редактировать: как указывает Чарльз Бейли в своем ответе, ваш код дает наибольший ключ , если он существует - т.е. если карта не пуста]

23 голосов
/ 14 ноября 2008

Да, но не забудьте проверить, что map.rbegin() != map.rend().

7 голосов
/ 22 ноября 2016

Вы можете использовать следующий метод: -

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