最終更新日時(UTC):
が更新

履歴 編集

function
<functional>

std::boyer_moore_searcher::コンストラクタ(C++17)

boyer_moore_searcher(
  RandomAccessIterator1 pat_first,
  RandomAccessIterator1 pat_last,
  Hash hf = Hash(),
  BinaryPredicate pred = BinaryPredicate());                       // (1)

boyer_moore_searcher(const boyer_moore_searcher& other) = default; // (2)
boyer_moore_searcher(boyer_moore_searcher&& other) = default;      // (3)

概要

boyer_moore_searcherオブジェクトを構築する。

このクラスにデフォルトコンストラクタは定義されない。

  • (1) : 検索対象 (pattern) のイテレータ範囲[pat_first, pat_last)を登録する
  • (2) : コピーコンストラクタ
  • (3) : ムーブコンストラクタ

要件

  • std::iterator_traits<RandomAccessIterator1>::value_typeの2つの値abにおいて、pred(a, b) == trueである場合、hf(a) == hf(b)trueであること

効果

  • (1) : 渡されたパラメータをメンバ変数として保持する

例外

  • (1) :
    • RandomAccessIterator1のコピーコンストラクタが、任意の例外を送出する可能性がある
    • RandomAccessIterator1が指す値型のデフォルトコンストラクタ、コピーコンストラクタ、コピー代入演算子が、任意の例外を送出する可能性がある
    • BinaryPredicateHashのコピーコンストラクタと関数呼び出し演算子が、任意の例外を送出する可能性がある
    • 内部のデータ構造で追加のメモリが必要になり、そのメモリ確保に失敗した場合、std::bad_alloc例外が送出される可能性がある

#include <string>
#include <functional>
#include <utility>

int main()
{
  // text内のpatternを検索する
  std::string text = "babcabaabaac";
  std::string pattern = "abaa";

  // (1) patternを登録
  std::boyer_moore_searcher a {
    pattern.cbegin(),
    pattern.cend()
  };

  // (2) コピーコンストラクタ
  auto b = a;

  // (3) ムーブコンストラクタ
  auto c = std::move(b);
}

出力

バージョン

言語

  • C++17

処理系