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
>
,
|
(ライブラリ基盤 TS) | |
std::experimental::search での使用に適したサーチャーで、 Boyer-Moore文字列検索アルゴリズム を実装しています。
boyer_moore_searcher
は
CopyConstructible
かつ
CopyAssignable
です。
RandomIt1
は
LegacyRandomAccessIterator
の要件を満たさなければなりません。
目次 |
メンバー関数
std::experimental::boyer_moore_searcher:: boyer_moore_searcher
|
boyer_moore_searcher
(
RandomIt1 pat_first,
RandomIt1 pat_last,
|
||
boyer_moore_searcher
を構築し、
pat_first
、
pat_last
、
hf
、
pred
のコピーを格納し、必要な内部データ構造を設定します。
RandomIt1
の値型は、
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
は同じ値型を持たなければならない。
パラメータ
| first, last | - | 検査対象の文字列を指定するイテレータのペア |
戻り値
|
パターン
それ以外の場合、
|
(C++17まで) |
|
パターン
それ以外の場合、
|
(C++17以降) |
ヘルパー関数
|
template
<
class
RandomIt,
class
Hash
=
std::
hash
<
typename
std::
iterator_traits
<
RandomIt
>
::
value_type
>
,
|
(ライブラリファンダメンタルTS) | |
テンプレート引数推論を使用して
std::experimental::boyer_moore_searcher
を構築するヘルパー関数。
return
boyer_moore_searcher
<
RandomIt, Hash, BinaryPredicate
>
(
pat_first, pat_last, hf, pred
)
;
と同等。
パラメータ
| pat_first, pat_last | - | 検索対象の文字列を指定するイテレータのペア |
| hf | - | 文字列の要素をハッシュするために使用される呼び出し可能オブジェクト |
| pred | - | 等価性を判定するために使用される呼び出し可能オブジェクト |
戻り値
boyer_moore_searcher
は、引数
pat_first
、
pat_last
、
hf
、および
pred
で構築されます。
例
#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
関連項目
|
要素の範囲の最初の出現を検索する
(関数テンプレート) |