Поделиться через


класс boyer_moore_horspool_searcher

Класс boyer_moore_horspool_searcher — это тип объекта функции, использующий алгоритм Boyer-Moore-Horspool для поиска последовательности, указанной в конструкторе объекта. Поиск выполняется в другой последовательности, предоставленной оператору вызова функции объекта. Этот класс передается в качестве параметра в одну из перегрузок std::search.

Синтаксис

template <
    class RandomAccessIterator,
    class Hash = hash<typename iterator_traits<RandomAccessIterator>::value_type>,
    class BinaryPredicate = equal_to<>>
class boyer_moore_horspool_searcher
{
    boyer_moore_horspool_searcher(
        RandomAccessIterator pat_first,
        RandomAccessIterator pat_last,
        Hash hf = Hash(),
        BinaryPredicate pred = BinaryPredicate());

    template <class RandomAccessIterator2>
    pair<RandomAccessIterator2, RandomAccessIterator2> operator()(
        RandomAccessIterator2 first,
        RandomAccessIterator2 last) const;
};

Участники

Элемент Description
Конструктор
boyer_moore_horspool_searcher Создает экземпляр средства поиска.
Операторы
operator() Вызывает операцию в последовательности.

Конструктор boyer_moore_horspool_searcher

boyer_moore_horspool_searcher Создает объект функции с помощью последовательности для поиска, хэш-объекта функции и предиката равенства.

boyer_moore_horspool_searcher(
    RandomAccessIterator pat_first,
    RandomAccessIterator pat_last,
    Hash hf = Hash(),
    BinaryPredicate pred = BinaryPredicate());

Параметры

pat_first
Начальный элемент последовательности для поиска.

pat_last
Конец последовательности для поиска.

hf
Вызываемый объект, используемый для хэшации элементов последовательности.

Пред
Необязательный предикат сравнения равенства для элементов последовательности. Если тип сравнения равенства не указан, используется std::equal_toзначение по умолчанию.

Замечания

Вызывает любое исключение, возникающее конструктором копирования типов BinaryPredicate, Hash или RandomAccessIterator, или оператором вызова BinaryPredicate или Hash.

Этот класс является новым в C++17.

operator()

Оператор вызова объекта функции. Выполняет поиск в последовательности аргументов для последовательности [first, last) , указанной конструктору.

template <class ForwardIterator2>   // C++17
pair<RandomAccessIterator2, RandomAccessIterator2> operator()(
    RandomAccessIterator2 first,
    RandomAccessIterator2 last) const;

Параметры

first
Начальный элемент последовательности для поиска внутри.

last
Конец последовательности для поиска внутри.

Замечания

Если шаблон [pat_first, pat_last) поиска пуст, возвращается make_pair(first, first). Если шаблон поиска не найден, возвращается make_pair(last, last). В противном случае возвращает пару итераторов в начало и конец последовательности в [first, last) соответствии с предикатом.[pat_first, pat_last)

Этот класс является новым в C++17.

См. также

<functional>
функции алгоритмов
класс boyer_moore_searcher
std::search