std:: boyer_moore_horspool_searcher
              
  | 
             
              
  | 
            ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
             
              
  | 
            |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
             
              
  | 
            |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
            ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
            ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
             
              
  | 
            |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
           
           Defined in header
            
         
            
             <functional>
            
           
           | 
         ||
| 
           
           
            
             template
            
            
             <
            
            
             class
            
            RandomIt1,
             
         
             
              class
             
             Hash
             
              =
             
             
              
               std::
               
                hash
               
              
             
             
              <
             
             
              typename
             
             
              
               std::
               
                iterator_traits
               
              
             
             
              <
             
             RandomIt1
             
              >
             
             
              ::
             
             
              value_type
             
             
              >
             
             ,
               | 
         (since C++17) | |
A searcher suitable for use with the Searcher overload of std::search that implements the Boyer-Moore-Horspool string searching algorithm .
       
        std::boyer_moore_horspool_searcher
       
       is
       
        
         CopyConstructible
        
       
       and
       
        
         CopyAssignable
        
       
       .
      
       
        RandomIt1
       
       must meet the requirements of
       
        
         LegacyRandomAccessIterator
        
       
       .
      
Member functions
std::boyer_moore_horspool_searcher:: boyer_moore_horspool_searcher
| 
            
            
             boyer_moore_horspool_searcher
             
              (
             
             RandomIt1 pat_first,
              
          
              RandomIt1 pat_last,
                | 
          ||
        Constructs a
        
         std::boyer_moore_horspool_searcher
        
        by storing copies of
        
         
          pat_first
         
        
        ,
        
         
          pat_last
         
        
        ,
        
         
          hf
         
        
        , and
        
         
          pred
         
        
        , 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
          
         
        
        .
       
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, or copy assignment operator of the value type of
         
RandomIt1; or - 
         the copy constructor or function call operator of
         
BinaryPredicateorHash. 
May also throw std::bad_alloc if additional memory required for internal data structures cannot be allocated.
std::boyer_moore_horspool_searcher:: operator()
| 
            
            
             
              template
             
             
              <
             
             
              class
             
             RandomIt2
             
              >
             
              
          std:: pair < RandomIt2, RandomIt2 > operator ( ) ( RandomIt2 first, RandomIt2 last ) const ;  | 
          ||
        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.
       
Notes
| Feature-test macro | Value | Std | Feature | 
|---|---|---|---|
         
          
           __cpp_lib_boyer_moore_searcher
          
         
         | 
        201603L | (C++17) | searchers | 
Example
#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::boyer_moore_horspool_searcher( needle.begin(), needle.end())); if (it != in.end()) std::cout << "The string " << std::quoted(needle) << " found at offset " << it - in.begin() << '\n'; else std::cout << "The string " << std::quoted(needle) << " not found\n"; }
Output:
The string "pisci" found at offset 43
See also
| 
         searches for the first occurrence of a range of elements
          (function template)  | 
       |
| 
          
           
            
             
              (C++17)
             
            
           
           
          | 
        
         standard C++ library search algorithm implementation
          (class template)  | 
       
| 
          
           
            
             
              (C++17)
             
            
           
           
          | 
        
         Boyer-Moore search algorithm implementation
          (class template)  |