Функция search_n
Функция search_n ищет в диапазоне
последовательность из заданного количества
одинаковых элементов. В первый параметр
мы передаем итератор начала диапазона,
во второй - итератор конца диапазона,
в третий - количество одинаковых элементов,
в четвертый - значение, которое нужно найти,
а в пятый - функцию сравнения.
Синтаксис
search_n(first, last, count, value, [pred])
Пример
Давайте найдем в массиве последовательность
из 3 одинаковых чисел 2:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v = {1, 2, 2, 2, 3, 4, 5};
auto res = search_n(v.begin(), v.end(), 3, 2);
if (res != v.end())
{
cout << "Found at position: " << (res - v.begin()) << endl;
}
else
{
cout << "Not found" << endl;
}
return 0;
}
Результат выполнения кода:
"Found at position: 1"
Пример
Давайте попробуем найти в массиве
последовательность из 3 одинаковых чисел
7, которых в нем нет:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v = {1, 2, 2, 2, 3, 4, 5};
auto res = search_n(v.begin(), v.end(), 3, 7);
if (res != v.end())
{
cout << "Found at position: " << (res - v.begin()) << endl;
}
else
{
cout << "Not found" << endl;
}
return 0;
}
Результат выполнения кода:
"Not found"
Пример
Давайте найдем в массиве последовательность
из 2 одинаковых чисел 4
и выведем само найденное значение:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v = {1, 2, 2, 2, 3, 4, 4, 5};
auto res = search_n(v.begin(), v.end(), 2, 4);
if (res != v.end())
{
cout << "Value: " << *res << endl;
cout << "Position: " << (res - v.begin()) << endl;
}
else
{
cout << "Not found" << endl;
}
return 0;
}
Результат выполнения кода:
"Value: 4"
"Position: 5"