У меня есть std::set<int>
, какой правильный способ найти наибольший int в этом наборе?
Как найти наибольший int в std:: set <int>?
Ответ 1
Какой компаратор вы используете?
По умолчанию это будет работать:
if(!myset.empty())
*myset.rbegin();
else
//the set is empty
Это будет также постоянное время вместо линейного, как решение max_element.
Ответ 2
Наборы всегда упорядочены. Предполагая, что вы используете сравнение по умолчанию (меньше), просто возьмите последний элемент в наборе. rbegin() может быть полезным.
Ответ 3
Я считаю, что вы ищете std::max_element
:
Функция
max_element()
возвращает итератор к самому большому элементу в диапазон [начало, конец].
Ответ 4
Поскольку set по умолчанию сортирует элемент по возрастанию, просто заберите последний элемент в наборе.
Ответ 5
Прежде чем push()
в set<int>
сохраните значение в int max
в глобальной переменной