РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
359 of 815 menu

Функция search

Функция search из секции algo ищет первую позицию, с которой начинается заданная подпоследовательность в диапазоне. В первый параметр мы передаем итератор начала диапазона поиска, во второй - итератор конца диапазона поиска, в третий - итератор начала искомой подпоследовательности, а в четвертый - итератор конца искомой подпоследовательности. Функция возвращает итератор на первый элемент найденной подпоследовательности или итератор конца диапазона поиска, если подпоследовательность не найдена.

Синтаксис

search(first1, last1, first2, last2)

Пример

Давайте найдем подпоследовательность {3, 4, 5} в векторе {1, 2, 3, 4, 5} и выведем позицию, с которой она начинается:

#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { vector<int> v = {1, 2, 3, 4, 5}; vector<int> sub = {3, 4, 5}; auto res = search(v.begin(), v.end(), sub.begin(), sub.end()); if (res != v.end()) { cout << res - v.begin() << endl; } else { cout << "not found" << endl; } return 0; }

Результат выполнения кода:

2

Пример

Давайте попробуем найти подпоследовательность {9, 9} в векторе {1, 2, 3, 4, 5}. Такой подпоследовательности в векторе нет, поэтому функция вернет итератор конца диапазона:

#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { vector<int> v = {1, 2, 3, 4, 5}; vector<int> sub = {9, 9}; auto res = search(v.begin(), v.end(), sub.begin(), sub.end()); if (res != v.end()) { cout << res - v.begin() << endl; } else { cout << "not found" << endl; } return 0; }

Результат выполнения кода:

"not found"

Смотрите также

  • функция find,
    которая ищет первый элемент с заданным значением
  • функция find_if,
    которая ищет первый элемент, удовлетворяющий условию
  • функция find_end,
    которая ищет последнее вхождение подпоследовательности
  • функция search_n,
    которая ищет подряд идущие одинаковые элементы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить