Namespaces
Variants

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

Von de.cppreference.net
 
 
 
 
Definiert in Header <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)

Ein Sucher, der für die Verwendung mit std::experimental::search geeignet ist und den Boyer-Moore-String-Suchalgorithmus.

boyer_moore_searcher ist CopyConstructible und CopyAssignable.

RandomIt1 muss die Anforderungen von LegacyRandomAccessIterator.

Memberfunktionen

std::experimental::boyer_moore_searcher::boyer_moore_searcher

boyer_moore_searcher( RandomIt1 pat_first,
                      RandomIt1 pat_last,
                      Hash hf = Hash(),
                      BinaryPredicate pred = BinaryPredicate() );

Erstellt einen boyer_moore_searcher durch Speichern von Kopien von pat_first, pat_last, hf und pred, wobei alle notwendigen internen Datenstrukturen eingerichtet werden.

Der Werttyp von RandomIt1 muss DefaultConstructible, CopyConstructible und CopyAssignable sein.

Für zwei beliebige Werte A und B des Typs std::iterator_traits<RandomIt1>::value_type, wenn pred(A, B) == true, dann hf(A) == hf(B) muss true sein.

Parameter

pat_first, pat_last - ein Iteratorpaar, das den zu durchsuchenden String bezeichnet
hf - ein aufrufbares Objekt zum Hashen der Elemente des Strings
pred - ein aufrufbares Objekt zur Gleichheitsbestimmung

Ausnahmen

Alle Ausnahmen, die ausgelöst werden durch

  • den Kopierkonstruktor von RandomIt1;
  • den Standardkonstruktor, Kopierkonstruktor und Kopierzuweisungsoperator des Wertetyps von RandomIt1; oder
  • den Kopierkonstruktor und Funktionsaufrufoperator von BinaryPredicate oder Hash.

Kann auch std::bad_alloc auslösen, wenn zusätzlicher Speicher für interne Datenstrukturen nicht zugewiesen werden kann.

std::experimental::boyer_moore_searcher::operator()

template< class RandomIt2 >
RandomIt2 operator()( RandomIt2 first, RandomIt2 last ) const;
(bis C++17)
template< class RandomIt2 >
std::pair<RandomIt2,RandomIt2> operator()( RandomIt2 first, RandomIt2 last ) const;
(seit C++17)

Die Mitgliedsfunktion, die von std::experimental::search aufgerufen wird, um eine Suche mit diesem Sucher durchzuführen. RandomIt2 muss die Anforderungen von LegacyRandomAccessIterator erfüllen.

RandomIt1 und RandomIt2 müssen den gleichen Werttyp haben.

Parameter

first, last - ein Iteratorpaar, das den zu untersuchenden String bezeichnet

Rückgabewert

Wenn das Muster [ pat_first , pat_last ) leer ist, wird first zurückgegeben.

Andernfalls ein Iterator zur ersten Position in [ first , last ) , wo eine Teilsequenz gefunden wird, die gleich [ pat_first , pat_last ) ist, wie durch pred definiert, oder eine Kopie von last andernfalls.

(bis C++17)

Wenn das Muster [ pat_first , pat_last ) leer ist, wird make_pair(first, first) zurückgegeben.

Andernfalls wird ein Iteratorpaar zur ersten und eine Position hinter der letzten Position in [ first , last ) zurückgegeben, wo eine Teilsequenz gefunden wird, die gleich [ pat_first , pat_last ) ist, wie durch pred definiert, oder make_pair(last, last) andernfalls.

(seit C++17)

Hilfsfunktionen

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());
(library fundamentals TS)

Hilfsfunktion, die eine std::experimental::boyer_moore_searcher mittels Vorlagenargumentdeduktion erstellt. Äquivalent zu return boyer_moore_searcher<RandomIt, Hash, BinaryPredicate>(pat_first, pat_last, hf, pred);

Parameter

pat_first, pat_last - ein Paar von Iteratoren, die die zu durchsuchende Zeichenkette bezeichnen
hf - ein aufrufbares Objekt zum Hashen der Elemente der Zeichenkette
pred - ein aufrufbares Objekt zur Gleichheitsbestimmung

Rückgabewert

Ein boyer_moore_searcher konstruiert mit den Argumenten pat_first , pat_last , hf und pred .

Beispiel

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

Ausgabe:

The string pisci found at offset 43

Siehe auch

sucht nach dem ersten Vorkommen eines Bereichs von Elementen
(Funktionsschablone & Algorithmus Funktionsobjekt)