Files
2025-10-25 03:02:53 +03:00

74 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[func.search.general]
# 22 General utilities library [[utilities]](./#utilities)
## 22.10 Function objects [[function.objects]](function.objects#func.search.general)
### 22.10.18 Searchers [[func.search]](func.search#general)
#### 22.10.18.1 General [func.search.general]
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L15269)
Subclause [[func.search]](func.search "22.10.18Searchers") provides function object types ([[function.objects]](function.objects "22.10Function objects")) for
operations that search for a sequence [pat_first, pat_last) in another
sequence [first, last) that is provided to the object's function call
operator[.](#1.sentence-1)
The first sequence (the pattern to be searched for) is provided to
the object's constructor, and the second (the sequence to be searched) is
provided to the function call operator[.](#1.sentence-2)
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L15277)
Each specialization of a class template specified in [[func.search]](func.search "22.10.18Searchers") shall meet the [*Cpp17CopyConstructible*](utility.arg.requirements#:Cpp17CopyConstructible "16.4.4.2Template argument requirements[utility.arg.requirements]") and [*Cpp17CopyAssignable*](utility.arg.requirements#:Cpp17CopyAssignable "16.4.4.2Template argument requirements[utility.arg.requirements]") requirements[.](#2.sentence-1)
Template parameters named
- [(2.1)](#2.1)
ForwardIterator,
- [(2.2)](#2.2)
ForwardIterator1,
- [(2.3)](#2.3)
ForwardIterator2,
- [(2.4)](#2.4)
RandomAccessIterator,
- [(2.5)](#2.5)
RandomAccessIterator1,
- [(2.6)](#2.6)
RandomAccessIterator2, and
- [(2.7)](#2.7)
BinaryPredicate
of templates specified in[[func.search]](func.search "22.10.18Searchers") shall meet the same requirements and semantics as
specified in [[algorithms.general]](algorithms.general "26.1General")[.](#2.sentence-2)
Template parameters named Hash shall meet the [*Cpp17Hash*](hash.requirements#:Cpp17Hash "16.4.4.5Cpp17Hash requirements[hash.requirements]") requirements (Table [37](hash.requirements#tab:cpp17.hash "Table 37: Cpp17Hash requirements"))[.](#2.sentence-3)
[3](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L15296)
The Boyer-Moore searcher implements the Boyer-Moore search algorithm[.](#3.sentence-1)
The Boyer-Moore-Horspool searcher implements the Boyer-Moore-Horspool search algorithm[.](#3.sentence-2)
In general, the Boyer-Moore searcher will use more memory and give better runtime performance than Boyer-Moore-Horspool[.](#3.sentence-3)