[#BloombergLP-bslstl-BoyerMooreHorspoolSearcher] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::BoyerMooreHorspoolSearcher :relfileprefix: ../../ :mrdocs: This class template implements an STL‐compliant searcher object that uses the Boyer, Moore, Horspool Algorithm. Several non‐standard accessors are also provided. == Synopsis Declared in `<bslstl_boyermoorehorspoolsearcher.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class RNDACC_ITR_NEEDLE, class HASH = xref:bsl/hash-06.adoc[bsl::hash<bsl::iterator_traits<RNDACC_ITR_NEEDLE>::value_type>], class EQUAL = xref:bsl/equal_to-0d.adoc[bsl::equal_to<bsl::iterator_traits<RNDACC_ITR_NEEDLE>::value_type>]> class BoyerMooreHorspoolSearcher; ---- == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/BoyerMooreHorspoolSearcher/DefaultEqual.adoc[`DefaultEqual`] | the default type for the `EQUAL` optional template parameter | xref:BloombergLP/bslstl/BoyerMooreHorspoolSearcher/DefaultHash.adoc[`DefaultHash`] | the default type for the `HASH` optional template parameter | xref:BloombergLP/bslstl/BoyerMooreHorspoolSearcher/value_type.adoc[`value_type`] | the type of the values that can be obtained by dereferencing a `RNDACC_ITR_NEEDLE` |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/BoyerMooreHorspoolSearcher/2constructor-0c6.adoc[`BoyerMooreHorspoolSearcher`] [.small]#[constructor]# | Constructors | xref:BloombergLP/bslstl/BoyerMooreHorspoolSearcher/operator_assign-0c2.adoc[`operator=`] | Assignment operators | xref:BloombergLP/bslstl/BoyerMooreHorspoolSearcher/allocator.adoc[`allocator`] | Return the allocator used by this object to supply memory. | xref:BloombergLP/bslstl/BoyerMooreHorspoolSearcher/equal.adoc[`equal`] | Return the equality comparison functor supplied on construction. | xref:BloombergLP/bslstl/BoyerMooreHorspoolSearcher/hash.adoc[`hash`] | Return the hashing functor supplied on construction. | xref:BloombergLP/bslstl/BoyerMooreHorspoolSearcher/needleFirst.adoc[`needleFirst`] | Return an iterator referring to the first element of the sequence of `value_type` values that can be sought by this searcher object. | xref:BloombergLP/bslstl/BoyerMooreHorspoolSearcher/needleLast.adoc[`needleLast`] | Return an iterator referring to one past the last element of the sequence of `value_type` values that can be sought by this searcher object. | xref:BloombergLP/bslstl/BoyerMooreHorspoolSearcher/operator_call.adoc[`operator()`] | Search the specified range `[haystackFirst, haystackLast)]` for the first sequence of `value_type` values specified on construction. Return the range where those values are found, or the range `[haystackLast, haystackLast)]` if that sequence is not found. The search is performed using an implementation of the Boyer Moore Horspool algorithm and has a complexity of O(N) for random text. Values of the "needle" sequence and the "haystack" sequence are compared using the equality comparison functor specified on construction. The behavior is undefined unless `haystackFirst` can be advanced to `haystackLast` and the iterators used to construct this object, `needleFirst()` and `needleLast()`, are still valid. Note that if the "needle" sequence is empty, the range `[haystackFirst, haystackFirst)]` is returned. Also note that if the "needle" sequence is longer than the "haystack" sequence ‐‐ thus, impossible for the "needle" to be found in the "haystack" ‐‐ the range `[haystackLast, haystackLast)]` is returned. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#