Namespaces
Variants

std::experimental:: default_searcher, std::experimental:: make_default_searcher

From ru.cppreference.net
Определено в заголовочном файле <experimental/functional>
template < class ForwardIterator1, class BinaryPredicate = std:: equal_to <> >
class default_searcher ;
(TS библиотечных основ)

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

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

Содержание

Функции-члены

std::experimental::default_searcher:: default_searcher

default_searcher ( ForwardIterator pat_first,

ForwardIterator pat_last,

BinaryPredicate pred = BinaryPredicate ( ) ) ;

Создает объект default_searcher , сохраняя копии pat_first , pat_last и pred .

Параметры

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

Исключения

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

std::experimental::default_searcher::operator()

template< class ForwardIterator2 >
ForwardIterator2 operator()( ForwardIterator2 first, ForwardIterator2 last ) const;
(до C++17)
template< class ForwardIterator2 >
std::pair<ForwardIterator2, ForwardIterator2>
    operator()( ForwardIterator2 first, ForwardIterator2 last ) const;
(начиная с C++17)

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

Эквивалентно std::search(first, last, pat_first, pat_last, pred);.

(до C++17)

Возвращает пару итераторов 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.

(до C++17)

Параметры

first, last - пара итераторов, определяющая строку для проверки

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

Итератор на первую позицию в [ first , last ) , где находится подпоследовательность, равная [ pat_first , pat_last ) , как определено pred , или копия last в противном случае.

(до C++17)

Пара итераторов на первую и следующую за последней позиции в [ first , last ) , где находится подпоследовательность, равная [ pat_first , pat_last ) , как определено pred , или пара копий last в противном случае.

(начиная с C++17)

Вспомогательные функции

template < class ForwardIterator, class BinaryPredicate = std:: equal_to <> >

default_searcher < ForwardIterator, BinaryPredicate > make_default_searcher (
ForwardIterator pat_first,
ForwardIterator pat_last,

BinaryPredicate pred = BinaryPredicate ( ) ) ;
(библиотека fundamentals TS)

Вспомогательная функция, которая создает std::experimental::default_searcher с использованием вывода шаблонных аргументов. Эквивалентно return default_searcher < ForwardIterator, BinaryPredicate > ( pat_first, pat_last, pred ) ;

Параметры

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

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

Объект default_searcher , созданный с аргументами pat_first , pat_last , pred .

Пример

#include <experimental/algorithm>
#include <experimental/functional>
#include <iostream>
#include <string>
int main()
{
    std::string in = "Lorem ipsum dolor sit amet, consectetur adipiscing elit,"
                     " sed do eiusmod tempor incididunt ut labore et dolore magna aliqua";
    std::string needle = "pisci";
    auto it = std::experimental::search(in.begin(), in.end(),
                  std::experimental::make_default_searcher(
                      needle.begin(), needle.end()));
    if (it != in.end())
        std::cout << "The string " << needle << " found at offset "
                  << it - in.begin() << '\n';
    else
        std::cout << "The string " << needle << " not found\n";
}

Вывод:

The string pisci found at offset 43

См. также

ищет первое вхождение диапазона элементов
(шаблон функции & функциональный объект алгоритма)