std::experimental::boyer_moore_searcher, std::experimental::make_boyer_moore_searcher
| ヘッダ <experimental/functional> で定義 |
||
| template< class RandomIt1, class Hash = std::hash<typename std::iterator_traits<RandomIt1>::value_type>, |
(Library Fundamentals TS) | |
std::experimental::search で使用するために適したセチャーで、Boyer-Moore文字列検索アルゴリズムを実装しています。
boyer_moore_searcher は CopyConstructible および CopyAssignable です。
RandomIt1はLegacyRandomAccessIteratorの要件を満たす必要があります。
目次 |
[edit] メンバ関数
std::experimental::boyer_moore_searcher::boyer_moore_searcher
| boyer_moore_searcher( RandomIt1 pat_first, RandomIt1 pat_last, |
||
pat_first, pat_last, hf, および pred のコピーを格納し、必要な内部データ構造を設定して boyer_moore_searcher を構築します。
RandomIt1のvalue typeは、DefaultConstructible、CopyConstructible、およびCopyAssignableである必要があります。
型 std::iterator_traits<RandomIt1>::value_type の任意の2つの値 A と B について、pred(A, B) == true ならば、hf(A) == hf(B) も true である必要があります。
パラメータ
| pat_first, pat_last | - | 検索対象の文字列を指定するイテレータのペア |
| hf | - | 文字列の要素をハッシュするために使用される呼び出し可能なオブジェクト |
| pred | - | 等価性を判断するために使用される呼び出し可能なオブジェクト |
例外
によってスローされる例外
RandomIt1のコピーコンストラクタ。RandomIt1の値型のデフォルトコンストラクタ、コピーコンストラクタ、およびコピー代入演算子。または、BinaryPredicateまたはHashのコピーコンストラクタおよび関数呼び出し演算子。
内部データ構造に必要な追加メモリを割り当てられない場合、std::bad_allocをスローする可能性があります。
std::experimental::boyer_moore_searcher::operator()
| template< class RandomIt2 > RandomIt2 operator()( RandomIt2 first, RandomIt2 last ) const; |
(C++17まで) | |
| template< class RandomIt2 > std::pair<RandomIt2,RandomIt2> operator()( RandomIt2 first, RandomIt2 last ) const; |
(C++17以降) | |
std::experimental::search によってこのセチャーで検索を実行するために呼び出されるメンバ関数。RandomIt2 は LegacyRandomAccessIterator の要件を満たす必要があります。
RandomIt1とRandomIt2は同じvalue typeを持つ必要があります。
パラメータ
| first, last | - | 検査対象の文字列を指定するイテレータのペア |
戻り値
|
パターン それ以外の場合、 |
(C++17まで) |
|
パターン それ以外の場合、 |
(C++17以降) |
[edit] ヘルパー関数
| template< class RandomIt, class Hash = std::hash<typename std::iterator_traits<RandomIt>::value_type>, |
(Library Fundamentals TS) | |
テンプレート引数推論を使用して std::experimental::boyer_moore_searcher を構築するヘルパー関数。 return boyer_moore_searcher<RandomIt, Hash, BinaryPredicate>(pat_first, pat_last, hf, pred); と同等です。
[edit] パラメータ
| pat_first, pat_last | - | 検索対象の文字列を指定するイテレータのペア |
| hf | - | 文字列の要素をハッシュするために使用される呼び出し可能なオブジェクト |
| pred | - | 等価性を判断するために使用される呼び出し可能なオブジェクト |
[edit] 戻り値
引数 pat_first, pat_last, hf, および pred を使用して構築された boyer_moore_searcher。
[edit] 例
#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"; }
出力
The string pisci found at offset 43
[edit] 関連項目
| 要素の範囲の最初の出現を検索する (関数テンプレート) |