16 #ifndef INCLUDE_NN_NLIB_SUCCINCT_LOUDS_H_ 17 #define INCLUDE_NN_NLIB_SUCCINCT_LOUDS_H_ 20 #include "nn/nlib/Swap.h" 23 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 24 #undef NLIB_VIS_PUBLIC 25 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 35 #ifdef __cpp_rvalue_references 38 sbv_ = std::move(rhs.sbv_);
52 template <
class TREEITER>
55 bool InitDirect(
const uint32_t* bv, uint32_t bv_size)
NLIB_NOEXCEPT;
62 bool IsLeaf(uint32_t pos)
const NLIB_NOEXCEPT {
63 return this->FirstChild(pos) < 0;
65 size_t MemSize() const NLIB_NOEXCEPT {
return sbv_.MemSize(); }
66 void Reset() NLIB_NOEXCEPT { sbv_.Reset(); }
75 template <
class TREEITER>
80 sbv_.Init(2 * num_nodes + 1);
86 idx += iter.GetNumChildren();
88 }
while (iter.BfsMoveNext());
90 NLIB_ASSERT(idx == 2 * num_nodes + 1);
101 NLIB_DEFINE_STD_SWAP(::nlib_ns::succinct::Louds)
103 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 104 #undef NLIB_VIS_PUBLIC 105 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 108 #endif // INCLUDE_NN_NLIB_SUCCINCT_LOUDS_H_ rank/select操作をベースとした基本的なクラスが定義されています。
bool Export(BinaryWriter *w) const noexcept
オブジェクトを(ファイルに)書き出します。
constexpr Louds() noexcept
コンストラクタです。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Rank/Select操作つきの32bit符号なし整数の集合を保持する簡潔データ構造です。
Louds & operator=(Louds &&rhs) noexcept
ムーブ代入演算子です。C++11の利用時に有効です。
Louds & assign(Louds &rhs, move_tag) noexcept
ムーブ代入演算子に相当します。
size_t MemSize() const noexcept
このクラスが明示的に確保するメモリ量を返します。
bool Import(BinaryReader *r) noexcept
書き出されたオブジェクトを読み出します。
void swap(Louds &rhs) noexcept
オブジェクトの内容をスワップします。
空の構造体で、関数の引数をムーブすべきことを示すために利用されます。
Louds(Louds &rhs, move_tag) noexcept
ムーブコンストラクタに相当します。
~Louds() noexcept
デストラクタです。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
void Reset() noexcept
オブジェクトをコンストラクタが呼ばれた直後の状態にします。
bool IsLeaf(uint32_t pos) const noexcept
ノードが葉ノードかどうかを判定します。
各種操作を で行うことができるコンパクトなツリー構造です。
ストリーム(OutputStream)にバイナリを書き込むクラスです。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
ストリーム(InputStream)からバイナリを読み込むクラスです。
Louds(Louds &&rhs) noexcept
ムーブコンストラクタです。C++11の利用時に有効です。