Edit

Share via


default_searcher Class

A default_searcher is a function object type for operations that 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. The default_searcher invokes std::search to perform the search.

Syntax

template <class ForwardIterator, class BinaryPredicate = equal_to<>>
class default_searcher
{
    default_searcher(
        ForwardIterator pat_first,
        ForwardIterator pat_last,
        BinaryPredicate pred = BinaryPredicate());

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

Members

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

default_searcher constructor

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

default_searcher(                   // C++17
    ForwardIterator pat_first,
    ForwardIterator pat_last,
    BinaryPredicate pred = BinaryPredicate());

constexpr default_searcher(         // C++20
    ForwardIterator pat_first,
    ForwardIterator pat_last,
    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.

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 or ForwardIterator types.

This class is new in C++17. C++20 made the constructor constexpr.

operator()

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

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

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

Parameters

first
The initial element of the sequence to search within.

last
The end of the sequence to search within.

Remarks

Returns a pair of iterators. The initial iterator i is the effective result of:

std::search( first, last, pat_first, pat_last, pred ).

The second iterator of the pair is last if i* is last. Otherwise, it's the effective result of:

std::next( i, std::distance( pat_first, pat_last )).

This class is new in C++17. C++20 made the call operator constexpr.

See also

<functional>
algorithm functions
std::search