Namespaces
Variants

std:: boyer_moore_horspool_searcher

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Negators
(C++17)
Searchers
boyer_moore_horspool_searcher
(C++17)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
Défini dans l'en-tête <functional>
template < class RandomIt1,

class Hash = std:: hash < typename std:: iterator_traits < RandomIt1 > :: value_type > ,
class BinaryPredicate = std:: equal_to <> >

class boyer_moore_horspool_searcher ;
(depuis C++17)

Un chercheur adapté à une utilisation avec la surcharge Searcher de std::search qui implémente l'algorithme de recherche de chaîne Boyer-Moore-Horspool .

std::boyer_moore_horspool_searcher est CopyConstructible et CopyAssignable .

RandomIt1 doit satisfaire aux exigences de LegacyRandomAccessIterator .

Table des matières

Fonctions membres

std::boyer_moore_horspool_searcher:: boyer_moore_horspool_searcher

boyer_moore_horspool_searcher ( RandomIt1 pat_first,

RandomIt1 pat_last,
Hash hf = Hash ( ) ,

BinaryPredicate pred = BinaryPredicate ( ) ) ;

Construit un std::boyer_moore_horspool_searcher en stockant des copies de pat_first , pat_last , hf , et pred , en configurant les structures de données internes nécessaires.

Le type de valeur de RandomIt1 doit être DefaultConstructible , CopyConstructible et CopyAssignable .

Pour deux valeurs quelconques A et B du type std:: iterator_traits < RandomIt1 > :: value_type , si pred ( A, B ) == true , alors hf ( A ) == hf ( B ) doit être true .

Paramètres

pat_first, pat_last - une paire d'itérateurs désignant la chaîne à rechercher
hf - un objet appelable utilisé pour hacher les éléments de la chaîne
pred - un objet appelable utilisé pour déterminer l'égalité

Exceptions

Toute exception levée par

  • le constructeur de copie de RandomIt1 ;
  • le constructeur par défaut, le constructeur de copie, ou l'opérateur d'affectation par copie du type de valeur de RandomIt1 ; ou
  • le constructeur de copie ou l'opérateur d'appel de fonction de BinaryPredicate ou Hash .

Peut également lever std::bad_alloc si la mémoire supplémentaire requise pour les structures de données internes ne peut pas être allouée.

std::boyer_moore_horspool_searcher:: operator()

template < class RandomIt2 >
std:: pair < RandomIt2, RandomIt2 > operator ( ) ( RandomIt2 first, RandomIt2 last ) const ;

La fonction membre appelée par la surcharge Searcher de std::search pour effectuer une recherche avec ce chercheur. RandomIt2 doit satisfaire aux exigences de LegacyRandomAccessIterator .

RandomIt1 et RandomIt2 doivent avoir le même type de valeur.

Paramètres

first, last - une paire d'itérateurs désignant la chaîne à examiner

Valeur de retour

Si le motif [ pat_first , pat_last ) est vide, retourne std:: make_pair ( first, first ) .

Sinon, retourne une paire d'itérateurs vers les première et dernière positions (dernière exclue) dans [ first , last ) où une sous-séquence égale à [ pat_first , pat_last ) telle que définie par pred est localisée, ou std:: make_pair ( last, last ) sinon.

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_boyer_moore_searcher 201603L (C++17) Searchers

Exemple

#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";
}

Sortie :

The string "pisci" found at offset 43

Voir aussi

recherche la première occurrence d'une plage d'éléments
(modèle de fonction)
implémentation de l'algorithme de recherche standard de la bibliothèque C++
(modèle de classe)
implémentation de l'algorithme de recherche Boyer-Moore
(modèle de classe)