Есть ли функция std :: set для определения самого большого элемента, который не превышает числа x? - PullRequest
0 голосов
/ 27 мая 2020

Я читал в Интернете, что std::set имеет полезные функции-члены, которые могут помочь в поиске элементов.

В частности,

std::set::lower_bound, который возвращает итератор для наименьшего элемента, который является > = число x и
std::set::upper_bound, которое возвращает итератор для наименьшего элемента, превышающего x.

Однако я хочу найти функцию, которая возвращает итератор для наибольшего элемент, не превышающий x. Есть ли такая функция в C ++?

1 Ответ

3 голосов
/ 27 мая 2020

Уменьшите итератор, возвращаемый из upper_bound:

std::set<int> s;
s.insert(3);
s.insert(4);
s.insert(5);
s.insert(7);

auto itor = s.upper_bound(6);
if (itor != s.begin())
{
    --itor;
    std::cout << *itor << std::endl;
}

Выше должно быть напечатано «5»

...