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

Функция find_end

Функция find_end из заголовочного файла <algorithm> ищет последнее вхождение одной последовательности в другую. В первый и второй параметры мы передаем итераторы начала и конца диапазона, в котором выполняется поиск, а в третий и четвертый - итераторы начала и конца искомой подпоследовательности. Функция возвращает итератор на начало последнего найденного вхождения. Если вхождение не найдено, возвращается итератор last1.

Существует также перегрузка с пятым параметром - предикатом, который задает условие сравнения элементов.

Синтаксис

find_end(first1, last1, first2, last2) find_end(first1, last1, first2, last2, pred)

Пример

Давайте найдем последнее вхождение подпоследовательности {3, 4} в последовательность {1, 2, 3, 4, 3, 4, 5}:

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

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

"Found at position: 4"

Пример

Давайте найдем последнее вхождение подстроки "cd" в строку "abcdecd":

#include <iostream> #include <algorithm> #include <string> using namespace std; int main() { string str = "abcdecd"; string sub = "cd"; auto it = find_end(str.begin(), str.end(), sub.begin(), sub.end()); if (it != str.end()) { cout << "Found at position: " << (it - str.begin()) << endl; } else { cout << "Not found" << endl; } return 0; }

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

"Found at position: 5"

Пример

Давайте найдем последнее вхождение подпоследовательности {1, 2} в последовательность {3, 4, 5}, где вхождение отсутствует:

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

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

"Not found"

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

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