Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
Definiert im 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 implementiert.

boyer_moore_searcher ist CopyConstructible und CopyAssignable.

RandomIt1 muss die Anforderungen an einen LegacyRandomAccessIterator erfüllen.

Inhalt

[edit] Member functions

std::experimental::boyer_moore_searcher::boyer_moore_searcher

boyer_moore_searcher( RandomIt1 pat_first,

                      RandomIt1 pat_last,
                      Hash hf = Hash(),

                      BinaryPredicate pred = BinaryPredicate() );

Konstruiert einen boyer_moore_searcher, indem Kopien von pat_first, pat_last, hf und pred gespeichert und 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 gilt: Wenn pred(A, B) == true, dann muss hf(A) == hf(B) true sein.

Parameter

pat_first, pat_last - ein Iteratorpaar, das die zu suchende Zeichenkette bezeichnet
hf - ein aufrufbares Objekt, das zum Hashing der Elemente des Strings verwendet wird
pred - ein aufrufbares Objekt, das zur Bestimmung der Gleichheit verwendet wird

Ausnahmen

Alle Ausnahmen, die von

  • dem Kopierkonstruktor von RandomIt1;
  • der Default-Konstruktor, der Kopierkonstruktor und der Zuweisungsoperator des Werttyps von RandomIt1; oder
  • der Kopierkonstruktor und der Funktionsaufrufoperator von BinaryPredicate oder Hash.

Kann auch std::bad_alloc auslösen, wenn zusätzlicher Speicher für interne Datenstrukturen nicht alloziert 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 Memberfunktion, 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 denselben Werttyp haben.

Parameter

first, last - ein Iteratorpaar, das die zu untersuchende Zeichenkette bezeichnet

Rückgabewert

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

Andernfalls ein Iterator auf die erste Position in [firstlast), an der eine Teilsequenz gefunden wird, die mit [pat_firstpat_last) gemäß pred übereinstimmt, oder andernfalls eine Kopie von last.

(bis C++17)

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

Andernfalls wird ein Paar von Iteratoren auf die erste und die Position nach der letzten zurückgegeben, an der eine Teilsequenz in [firstlast) gefunden wird, die mit [pat_firstpat_last) gemäß pred übereinstimmt, oder andernfalls make_pair(last, last).

(seit C++17)

[edit] 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 einen std::experimental::boyer_moore_searcher unter Verwendung der Vorlagendatentypableitung konstruiert. Entspricht return boyer_moore_searcher<RandomIt, Hash, BinaryPredicate>(pat_first, pat_last, hf, pred);

[edit] Parameter

pat_first, pat_last - ein Iteratorpaar, das die zu suchende Zeichenkette bezeichnet
hf - ein aufrufbares Objekt, das zum Hashing der Elemente des Strings verwendet wird
pred - ein aufrufbares Objekt, das zur Bestimmung der Gleichheit verwendet wird

[edit] Rückgabewert

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

[edit] 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

[edit] Siehe auch

Sucht nach dem ersten Vorkommen eines Elementbereichs
(Funktionstempelat) [edit]