У меня есть 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 в глобальной переменной