Функция ranges::find
Функция ranges::find ищет первое вхождение
заданного значения в диапазоне и возвращает
итератор на найденный элемент. В первом параметре
мы передаем диапазон, в котором выполняется поиск,
а во втором - значение, которое нужно найти.
Если элемент не найден, функция возвращает итератор
на конец диапазона.
Функция доступна в заголовочном файле
<algorithm> и появилась в стандарте C++20.
Она является частью библиотеки ranges и работает
с диапазонами напрямую, без необходимости
передавать начальный и конечный итераторы.
Синтаксис
ranges::find(range, value)
ranges::find(range, value, pred)
Пример
Давайте найдем число 3 в векторе
{1, 2, 3, 4, 5} и выведем результат поиска:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5};
auto it = ranges::find(v, 3);
if (it != v.end())
{
cout << "Found: " << *it << endl;
}
else
{
cout << "Not found" << endl;
}
return 0;
}
Результат выполнения кода:
"Found: 3"
Пример
Давайте попробуем найти число 10, которого
нет в векторе {1, 2, 3, 4, 5}:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5};
auto it = ranges::find(v, 10);
if (it != v.end())
{
cout << "Found: " << *it << endl;
}
else
{
cout << "Not found" << endl;
}
return 0;
}
Результат выполнения кода:
"Not found"
Пример
Давайте найдем позицию элемента в векторе,
используя функцию distance:
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5};
auto it = ranges::find(v, 4);
if (it != v.end())
{
cout << "Index: " << distance(v.begin(), it) << endl;
}
return 0;
}
Результат выполнения кода:
"Index: 3"
Смотрите также
-
функция
ranges::count,
которая считает количество вхождений элемента -
функция
ranges::begin,
которая возвращает итератор на начало диапазона -
функция
ranges::end,
которая возвращает итератор на конец диапазона -
функция
distance,
которая вычисляет расстояние между итераторами