Как мне найти самый большой int в std :: set <int>? - PullRequest
55 голосов
/ 27 августа 2009

У меня есть std::set<int>, как правильно найти наибольшее значение int в этом наборе?

Ответы [ 5 ]

91 голосов
/ 27 августа 2009

Какой компаратор вы используете?

По умолчанию это будет работать:

if(!myset.empty())
    *myset.rbegin();
else
    //the set is empty

Это также будет постоянное время, а не линейное, как у решения max_element.

31 голосов
/ 27 августа 2009

Наборы всегда заказываются. Предполагая, что вы используете сравнение по умолчанию (меньше), просто возьмите последний элемент в наборе. Может быть полезным rbegin ().

6 голосов
/ 27 августа 2009

Поскольку set сортирует элемент по возрастанию по умолчанию, просто выберите последний элемент в наборе.

6 голосов
/ 27 августа 2009

Я полагаю, вы ищете std::max_element:

Функция max_element() возвращает итератор для самого большого элемента в диапазон [начало, конец).

0 голосов
/ 09 августа 2017

Перед тем, как push() в вашем set<int> сохраните значение в int max в глобальной переменной

...