Максимальное число не превышающее заданное в отсортированном контейнере C++
Есть ли простой способ или встроенная функция, как lower_bound, но которая вернёт указатель на максимальное число не превышающее X?
К примеру:
vector<int> {2,3,5,7,9,11}
Я хочу найти максимальное число не превышающее 8 и получить итератор на элемент со значением 7.
Ответы (1 шт):
Автор решения: nyekitka
→ Ссылка
В библиотеке algorithm есть такая функция, как std::lower_bound, которая принимает в качестве трёх аргументов итератор на начало контейнера, итератор на конец контейнера и значение X. Возвращает итератор на первое число, которое не удовлетворяет условию X > *it:
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
vector<int> a = {1, 3, 5, 7, 9, 11};
cout << *(--lower_bound(a.begin(), a.end(), 8));