Namespaces
Variants

std::boyer_moore_horspool_searcher

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support du langage
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
Objets fonction
Invocation de fonction
(C++17)(C++23)
Objet fonction identité
(C++20)
Wrapper d'opérateur transparent
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

Anciens binders et adaptateurs
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)  
(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++20*)
(jusqu'à C++20*)
(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)

(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++20*)
(jusqu'à 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 les exigences de LegacyRandomAccessIterator.

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
(fonction générique & objet fonction d’algorithme)
implémentation standard de l’algorithme de recherche de la bibliothèque C++
(gabarit de classe)
implémentation de l’algorithme de recherche de Boyer-Moore
(gabarit de classe)