Namespaces
Variants

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

De fr.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;
(fondamentaux de la bibliothèque TS)

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

boyer_moore_searcher est CopyConstructible et CopyAssignable.

RandomIt1 doit satisfaire aux exigences de LegacyRandomAccessIterator.

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, et en initialisant les structures de données internes nécessaires.

Le type 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 de copie du type 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 nécessaire aux 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)

La 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());
(fondamentaux de la bibliothèque TS)

Fonction auxiliaire qui construit un std::experimental::boyer_moore_searcher par déduction d'argument de modèle. É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 & objet fonction d'algorithme)