close
Пространства имён
Варианты
Действия

std::default_searcher

Материал из cppreference.com
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Объекты функции
Функции обёртки
(C++11)
(C++11)
Применение частичных функций
(C++20)(C++23)
(C++11)
Вызов функции
(C++17)(C++23)
Объект идентичности функции
(C++20)
Обёртки ссылок
(C++11)(C++11)
Прозрачные обёртки операторов
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

Отрицатели
(C++17)
Искатели
Ограниченные компараторы
Старые привязки и адаптеры
(до C++17*)
(до C++17*)
(до C++17*)
(до C++17*)
(до C++17*)(до C++17*)(до C++17*)(до C++17*)
(до C++20*)
(до C++20*)
(до C++17*)(до C++17*)
(до C++17*)(до C++17*)

(до C++17*)
(до C++17*)(до C++17*)(до C++17*)(до C++17*)
(до C++20*)
(до C++20*)
 
<tbody> </tbody>
Определено в заголовочном файле <functional>
template< class ForwardIt, class BinaryPredicate = std::equal_to<> > class default_searcher;
(начиная с C++17)

Класс, подходящий для использования с перегрузкой Searcher функции std::search, которая делегирует операцию поиска std::search стандартной библиотеки до C++17.

std::default_searcher является CopyConstructible и CopyAssignable.

Функции-элементы

std::default_searcher::default_searcher

<tbody> </tbody> <tbody class="t-dcl-rev "> </tbody><tbody> </tbody>
default_searcher( ForwardIt pat_first, ForwardIt pat_last, BinaryPredicate pred = BinaryPredicate());
(начиная с C++17)
(до C++20)
constexpr default_searcher( ForwardIt pat_first, ForwardIt pat_last, BinaryPredicate pred = BinaryPredicate());
(начиная с C++20)

Создаёт std::default_searcher, сохраняя копии pat_first, pat_last и pred.

Параметры

pat_first, pat_last пара итераторов, определяющая искомую строку
pred вызываемый объект, используемый для определения равенства

Исключения

Любые исключения, создаваемые конструкторами копирования BinaryPredicate или ForwardIt.

std::default_searcher::operator()

<tbody> </tbody> <tbody class="t-dcl-rev "> </tbody><tbody> </tbody>
template< class ForwardIt2 > std::pair<ForwardIt2, ForwardIt2> operator()( ForwardIt2 first, ForwardIt2 last ) const;
(начиная с C++17)
(до C++20)
template< class ForwardIt2 > constexpr std::pair<ForwardIt2, ForwardIt2> operator()( ForwardIt2 first, ForwardIt2 last ) const;
(начиная с C++20)

Функция-элемент, вызываемая перегрузкой Searcher функции std::search для выполнения поиска с помощью этого средства поиска.

Возвращает пару итераторов i, j, где i равно std::search(first, last, pat_first, pat_last, pred) и j равно std::next(i, std::distance(pat_first, pat_last)), если std::search возвращает last (нет совпадения), и в этом случае j также равно last.

Параметры

first, last пара итераторов, обозначающая строку для проверки

Возвращаемое значение

Пара итераторов первой и последней позиций в [firstlast), где находится подпоследовательность, которая при сравнении равна [pat_firstpat_last), как определено pred, или pair копий last иначе.

Пример

#include <algorithm>
#include <functional>
#include <iomanip>
#include <iostream>
#include <string_view>
 
int main()
{
    constexpr std::string_view in =
        "Lorem ipsum dolor sit amet, consectetur adipiscing elit,"
        " sed do eiusmod tempor incididunt ut labore et dolore magna aliqua";

    const std::string_view needle{"pisci"};

    auto it = std::search(in.begin(), in.end(),
                   std::default_searcher(
                       needle.begin(), needle.end()));
    if(it != in.end())
        std::cout << "Строка " << std::quoted(needle) << " найдена по смещению "
                  << it - in.begin() << '\n';
    else
        std::cout << "Строка " << std::quoted(needle) << " не найдена\n";
}

Вывод:

Строка "pisci" найдена по смещению 43

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

ищет диапазон элементов
(шаблон функции) [править]
реализация алгоритма поиска Бойера-Мура
(шаблон класса) [править]
реализация алгоритма поиска Бойера-Мура-Хорспула
(шаблон класса) [править]