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