boyer_moore_searcher class

The boyer_moore_searcher class is a function object type that uses the Boyer-Moore algorithm to search for a sequence specified in the object's constructor. The search is done within another sequence provided to the object's function call operator. This class is passed as a parameter to one of the overloads of std::search.

Syntax

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

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

Members

Member Description
Constructor
boyer_moore_searcher Constructs a searcher instance.
Operators
operator() Invokes the operation on the sequence.

boyer_moore_searcher constructor

Constructs a boyer_moore_searcher function object by using the sequence to search for, a hash function object, and an equality predicate.

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

Parameters

pat_first
The initial element of the sequence to search for.

pat_last
The end of the sequence to search for.

hf
A callable object, used to hash the sequence elements.

pred
The optional equality comparison predicate for sequence elements. If an equality comparison type isn't specified, the default is std::equal_to.

Remarks

Throws any exception thrown by the copy constructor of the BinaryPredicate, Hash, or RandomAccessIterator types, or the call operator of BinaryPredicate or Hash.

This class is new in C++17.

operator()

The call operator of the function object. Searches within the argument sequence [first, last) for the sequence specified to the constructor.

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

Parameters

first
The initial element of the sequence to search within.

last
The end of the sequence to search within.

Remarks

If the search pattern [pat_first, pat_last) is empty, returns make_pair(first, first). If the search pattern isn't found, returns make_pair(last, last). Otherwise, returns a pair of iterators to the beginning and end of a sequence in [first, last) that's equal to [pat_first, pat_last) according to the predicate pred.

This class is new in C++17.

See also

<functional>
algorithm functions
boyer_moore_horspool_searcher class
std::search