std::boyer_moore_searcher(3)
๐ NAME ๐
Okay so welcome to the std::boyer_moore_searcher page from the C++ Standard Libary manual, bestie ๐
The name is std::boyer_moore_searcher - std::boyer_moore_searcher, and yes that's the whole NAME section, no cap โจ
๐ Synopsis ๐
Defined in header <functional>.
The template signature is literally this, so copy it exactly:
template< class RandomIt1,
class Hash = std::hash<typename
std::iterator_traits<RandomIt1>::value_type>,
(since C++17)
class BinaryPredicate = std::equal_to<> >
class boyer_moore_searcher;
So this class is a searcher suitable for use with the Searcher overload of std::search, and it implements the Boyer-Moore string searching algorithm. Iconic. ๐
std::boyer_moore_searcher is CopyConstructible and CopyAssignable.
RandomIt1 must meet the requirements of LegacyRandomAccessIterator, fr fr ๐ฆ
๐ง Member functions ๐ง
๐ std::boyer_moore_searcher::boyer_moore_searcher ๐
boyer_moore_searcher( RandomIt1 pat_first,
RandomIt1 pat_last,
Hash hf = Hash(),
BinaryPredicate pred = BinaryPredicate() );
This constructor constructs a std::boyer_moore_searcher by storing copies of pat_first, pat_last, hf, and pred, and setting up any necessary internal data structures. ๐
The value type of RandomIt1 must be DefaultConstructible, CopyConstructible and CopyAssignable.
For any two values A and B of the type std::iterator_traits<RandomIt1>::value_type, if pred(A, B) == true, then hf(A) == hf(B) shall be true. That's the vibe check ๐ธ
๐ Parameters ๐
pat_first,pat_lastโ a pair of iterators designating the string to be searched for ๐hfโ a callable object used to hash the elements of the string ๐งฎpredโ a callable object used to determine equality ๐ซถ
๐ Exceptions ๐
Any exceptions thrown by:
- the copy constructor of
RandomIt1; - the default constructor, copy constructor, and copy assignment operator of the value type of
RandomIt1; or - the copy constructor and function call operator of
BinaryPredicateorHash.
May also throw std::bad_alloc if additional memory required for internal data structures cannot be allocated. So yeah, memory said no, careful ๐ญ
๐ std::boyer_moore_searcher::operator() ๐
template< class RandomIt2 >
std::pair<RandomIt2, RandomIt2> operator()( RandomIt2 first,
(since C++17)
RandomIt2 last ) const;
This is the member function called by the Searcher overload of std::search to perform a search with this searcher. RandomIt2 must meet the requirements of LegacyRandomAccessIterator.
RandomIt1 and RandomIt2 must have the same value type. ๐ฅ
๐ Parameters ๐
first,lastโ a pair of iterators designating the string to be examined ๐
๐ Return value ๐
If the pattern [pat_first, pat_last) is empty, returns std::make_pair(first, first).
Otherwise, returns a pair of iterators to the first and one past last positions in [first, last) where a subsequence that compares equal to [pat_first, pat_last) as defined by pred is located, or std::make_pair(last, last) otherwise. That's the whole return-value tea. ๐ต
๐ Notes ๐
Feature-test macro vibe check:
- Feature-test macro:
__cpp_lib_boyer_moore_searcher - Value:
201603L - Std:
(C++17) - Feature:
searchers
That's the whole table, bestie โจ
๐ Example ๐
// Run this code
#include <algorithm>
#include <functional>
#include <iomanip>
#include <iostream>
#include <string_view>
int main()
{
constexpr std::string_view haystack =
"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"};
if (const auto it = std::search(haystack.begin(), haystack.end(),
std::boyer_moore_searcher(needle.begin(), needle.end()));
it != haystack.end()
)
std::cout << "The string " << std::quoted(needle) << " found at
offset "
<< it - haystack.begin() << '\n';
else
std::cout << "The string " << std::quoted(needle) << " not
found\n";
}
๐ป Output ๐ป
The string "pisci" found at offset 43
๐ See also ๐
searchโ searches for a range of elements (function template) ๐default_searcherโ standard C++ library search algorithm implementation (C++17) (class template) ๐งboyer_moore_horspool_searcherโ Boyer-Moore-Horspool search algorithm implementation (C++17) (class template) ๐ฆ
xoxo, your Unix bestie ๐ โ source/version: http://cppreference.com; date: 2024.06.10; page: std::boyer_moore_searcher(3). Bye bestie ๐ซถโจ
๐ฆ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 ยท MIT
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms