Namespaces
Variants

std::experimental:: boyer_moore_searcher, std::experimental:: make_boyer_moore_searcher

From cppreference.net
Défini dans l'en-tête <experimental/functional>
template < class RandomIt1,

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

class boyer_moore_searcher ;
(library fundamentals TS)

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

boyer_moore_searcher est CopyConstructible et CopyAssignable .

RandomIt1 doit satisfaire aux exigences de LegacyRandomAccessIterator .

Table des matières

Fonctions membres

std::experimental::boyer_moore_searcher:: boyer_moore_searcher

boyer_moore_searcher ( RandomIt1 pat_first,

RandomIt1 pat_last,
Hash hf = Hash ( ) ,

BinaryPredicate pred = BinaryPredicate ( ) ) ;

Construit un boyer_moore_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 et l'opérateur d'affectation par copie du type de valeur de RandomIt1 ; ou
  • le constructeur de copie et 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::experimental::boyer_moore_searcher:: operator()

template < class RandomIt2 >
RandomIt2 operator ( ) ( RandomIt2 first, RandomIt2 last ) const ;
(jusqu'à C++17)
template < class RandomIt2 >
std:: pair < RandomIt2,RandomIt2 > operator ( ) ( RandomIt2 first, RandomIt2 last ) const ;
(depuis C++17)

Fonction membre appelée par std::experimental::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 first .

Sinon, un itérateur vers la première position dans [ first , last ) où une sous-séquence égale à [ pat_first , pat_last ) telle que définie par pred est localisée, ou une copie de last sinon.

(jusqu'à C++17)

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

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

(depuis C++17)

Fonctions Auxiliaires

template < class RandomIt,

class Hash = std:: hash < typename std:: iterator_traits < RandomIt > :: value_type > ,
class BinaryPredicate = std:: equal_to <> >
boyer_moore_searcher < RandomIt, Hash, BinaryPredicate > make_boyer_moore_searcher (
RandomIt pat_first,
RandomIt pat_last,
Hash hf = Hash ( ) ,

BinaryPredicate pred = BinaryPredicate ( ) ) ;
(spécifications techniques des bibliothèques fondamentales)

Fonction d'aide qui construit un std::experimental::boyer_moore_searcher en utilisant la déduction d'arguments de template. Équivalent à return boyer_moore_searcher < RandomIt, Hash, BinaryPredicate > ( pat_first, pat_last, hf, pred ) ;

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é

Valeur de retour

Un boyer_moore_searcher construit avec les arguments pat_first , pat_last , hf , et pred .

Exemple

#include <experimental/algorithm>
#include <experimental/functional>
#include <iostream>
#include <string>
int main()
{
    std::string in = "Lorem ipsum dolor sit amet, consectetur adipiscing elit,"
                     " sed do eiusmod tempor incididunt ut labore et dolore magna aliqua";
    std::string needle = "pisci";
    auto it = std::experimental::search(in.begin(), in.end(),
                  std::experimental::make_boyer_moore_searcher(
                      needle.begin(), needle.end()));
    if (it != in.end())
        std::cout << "The string " << needle << " found at offset "
                  << it - in.begin() << '\n';
    else
        std::cout << "The string " << 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)