Функция upper_bound
Функция upper_bound из библиотеки algorithm
возвращает итератор на первый элемент в отсортированном
диапазоне, который строго больше заданного значения.
В первый параметр мы передаем итератор на начало диапазона,
во второй - итератор на конец диапазона, а в третий - значение,
с которым сравниваются элементы. Если такого элемента нет,
функция возвращает итератор на конец диапазона.
Синтаксис
upper_bound(first, last, value)
Пример
Давайте найдем первый элемент вектора {1, 2, 3, 4, 5},
который больше числа 3:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5};
auto it = upper_bound(v.begin(), v.end(), 3);
cout << *it << endl;
return 0;
}
Результат выполнения кода:
4
Пример
Давайте найдем индекс первого элемента вектора
{1, 2, 3, 4, 5}, который больше числа 2:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5};
auto it = upper_bound(v.begin(), v.end(), 2);
cout << it - v.begin() << endl;
return 0;
}
Результат выполнения кода:
2
Пример
Давайте проверим, что функция upper_bound возвращает,
если все элементы вектора {1, 2, 3, 4, 5} меньше
или равны числу 5:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5};
auto it = upper_bound(v.begin(), v.end(), 5);
if (it == v.end())
{
cout << "not found" << endl;
}
return 0;
}
Результат выполнения кода:
"not found"
Смотрите также
-
функция
lower_bound,
которая ищет первый элемент не меньше заданного значения -
функция
binary_search,
которая проверяет наличие элемента в отсортированном диапазоне -
функция
equal_range,
которая возвращает диапазон элементов, равных заданному значению -
функция
find,
которая ищет элемент в диапазоне