std::default_searcher
| Определено в заголовочном файле <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 | — | пара итераторов, обозначающая строку для проверки |
Возвращаемое значение
Пара итераторов первой и последней позиций в [first, last), где находится подпоследовательность, которая при сравнении равна [pat_first, pat_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
Смотрите также
| ищет диапазон элементов (шаблон функции) | |
(C++17) |
реализация алгоритма поиска Бойера-Мура (шаблон класса) |
| реализация алгоритма поиска Бойера-Мура-Хорспула (шаблон класса) |