nlib
nn::nlib::succinct::Trie クラスfinal

LOUDSを利用したTrieの実装です。 [詳解]

#include "nn/nlib/succinct/Trie.h"

公開型

typedef bool(* MatchCallback) (const char *first, const char *last, uint32_t nodeid, void *user_obj)
 ユーザー定義のコールバック関数です。 [詳解]
 

公開メンバ関数

void Match (const char *cstr, MatchCallback callback, void *user_obj=NULL) noexcept
 文字列を検査してTrieに登録されている文字列を検出します。 [詳解]
 
void Match (const void *data, size_t n, MatchCallback callback, void *user_obj) noexcept
 データを走査して検出対象のパターンを検出します。 [詳解]
 
void MatchBackward (const void *data, size_t n, MatchCallback callback, void *user_obj) noexcept
 データを後ろ向きに走査して検出対象のパターンを検出します。 [詳解]
 
errno_t GetCommonPrefixWords (const void *prefix, size_t n, ReallocCstringVec *vec) noexcept
 共通のプレフィックスを持つデータを辞書順にリストアップします。 [詳解]
 
void Reset () noexcept
 オブジェクトをコンストラクタが呼ばれた直後の状態にします。
 
基本的なメンバ関数
 Trie () noexcept
 コンストラクタです。
 
 ~Trie () noexcept
 デストラクタです。
 
Trieassign (Trie &rhs, move_tag)
 swapを利用したムーブにより代入します。
 
 Trie (Trie &rhs, move_tag)
 swapを利用したムーブによりオブジェクトを構築します。
 
 Trie (Trie &&rhs)
 ムーブコンストラクタです。C++11の利用時に有効です。
 
Trieoperator= (Trie &&rhs)
 ムーブ代入演算子です。C++11の利用時に有効です。
 
void swap (Trie &rhs) noexcept
 オブジェクトの内容をスワップします。
 
bool Init () noexcept
 オブジェクトの内容をリセットします。 [詳解]
 
インポートとエクスポート
bool Export (BinaryWriter *w) const noexcept
 オブジェクトを(ファイルに)書き出します。 [詳解]
 
bool Import (BinaryReader *r) noexcept
 書き出されたオブジェクトを読み出します。 [詳解]
 

詳解

LOUDSを利用したTrieの実装です。

説明
コンパクトなデータサイズでTrieを利用することができます。 TrieBuilderで作成するか、Import()メソッドでインポートして利用します。

Trie.h20 行目に定義があります。

型定義メンバ詳解

§ MatchCallback

nn::nlib::succinct::Trie::MatchCallback

ユーザー定義のコールバック関数です。

引数
[in]first検出語の先頭(後ろ向きサーチの場合は最後尾)を指すポインタ
[in]last検出語の直後(後ろ向きサーチの場合は直前)を指すポインタ
[in]nodeid検出した語のID(連続値ではない)
[in,out]user_objユーザー指定オブジェクトへのポインタ
戻り値
trueの場合は引き続き解析を続ける。falseの場合は処理を打ち切り
説明
文字列(パターン)を検出した場合に呼び出されます。 ユーザーはそれに対応した処理を記述します。

Trie.h31 行目に定義があります。

関数詳解

§ Export()

nn::nlib::succinct::Trie::Export ( BinaryWriter w) const
noexcept

オブジェクトを(ファイルに)書き出します。

引数
[in]w書き出し用オブジェクト
戻り値
成功した場合はtrue
説明
書きだしたデータはImport()関数で読みだして復元することができます。 また、データは常にリトルエンディアンで書き出されます。

§ GetCommonPrefixWords()

nn::nlib::succinct::Trie::GetCommonPrefixWords ( const void *  prefix,
size_t  n,
ReallocCstringVec vec 
)
noexcept

共通のプレフィックスを持つデータを辞書順にリストアップします。

引数
[in]prefixプレフィックスへのポインタ
[in]nプレフィックスの長さ
[out]vecprefix をプレフィックスとして持つ文字列が格納されるベクタ
戻り値
0ならば成功

§ Import()

nn::nlib::succinct::Trie::Import ( BinaryReader r)
noexcept

書き出されたオブジェクトを読み出します。

引数
[in]r読み出し用オブジェクト
戻り値
インポートが成功した場合はtrue

§ Init()

nn::nlib::succinct::Trie::Init ( )
noexcept

オブジェクトの内容をリセットします。

戻り値
trueを返します。

§ Match() [1/2]

nn::nlib::succinct::Trie::Match ( const char *  cstr,
MatchCallback  callback,
void *  user_obj = NULL 
)
inlinenoexcept

文字列を検査してTrieに登録されている文字列を検出します。

引数
[in]cstrヌル終端する文字列
[in]callback語が検出された場合に呼び出されるコールバック関数
[in,out]user_objユーザー指定オブジェクトへのポインタ

Trie.h33 行目に定義があります。

§ Match() [2/2]

nn::nlib::succinct::Trie::Match ( const void *  data,
size_t  n,
MatchCallback  callback,
void *  user_obj 
)
noexcept

データを走査して検出対象のパターンを検出します。

引数
[in]data検査対象のデータの先頭へのポインタ
[in]nデータサイズ
[in]callbackパターンが検出された場合に呼び出されるコールバック関数
[in,out]user_objユーザー指定オブジェクトへのポインタ

§ MatchBackward()

nn::nlib::succinct::Trie::MatchBackward ( const void *  data,
size_t  n,
MatchCallback  callback,
void *  user_obj 
)
noexcept

データを後ろ向きに走査して検出対象のパターンを検出します。

引数
[in]data検査対象のデータの最後尾へのポインタ
[in]nデータサイズ
[in]callbackパターンが検出された場合に呼び出されるコールバック関数
[in,out]user_objユーザー指定オブジェクトへのポインタ

このクラス詳解は次のファイルから抽出されました: