16 #ifndef INCLUDE_NN_NLIB_SUCCINCT_BP_H_ 17 #define INCLUDE_NN_NLIB_SUCCINCT_BP_H_ 22 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 23 #undef NLIB_VIS_PUBLIC 24 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 34 NLIB_DEFMOVE_PIMPL(
Bp);
36 BpPrivate* tmp = rhs.prv_;
40 template <
class TREEITER>
42 bool InitDirect(
const uint32_t* bv, uint32_t bv_size)
NLIB_NOEXCEPT;
52 int Parent(uint32_t pos)
const NLIB_NOEXCEPT {
return this->Enclose(pos); }
60 bool Build(
const uint32_t* bv, uint32_t bvsize)
NLIB_NOEXCEPT;
68 template <
class TREEITER>
74 if (num_nodes >= 0x80000000)
return false;
75 if (prv_)
return false;
76 Set* bv = Get1stLevelSet();
81 bv->
Init(num_nodes * 2);
86 const void* parent = iter.ParentNodePtr();
87 const void* node = iter.NodePtr();
88 if (stack.
empty() || stack.
back() == parent) {
95 while (stack.
back() != parent) {
105 }
while (iter.MoveNext());
117 NLIB_DEFINE_STD_SWAP(::nlib_ns::succinct::Bp)
119 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 120 #undef NLIB_VIS_PUBLIC 121 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 124 #endif // INCLUDE_NN_NLIB_SUCCINCT_BP_H_ rank/select操作をベースとした基本的なクラスが定義されています。
bool push_back(const T &v) noexcept
ベクタに要素を追加します。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
uint32_t GetBitVectorSize() const noexcept
ビットベクトルのサイズを返します。
const uint32_t * GetBitVector() const noexcept
ビットベクトルへのポインタを返します。
bool TurnOn(uint32_t idx) noexcept
集合に32bit符号なし整数を追加します。
bool pop_back() noexcept
ベクタの末尾から要素を削除します。
Rank/Select操作つきの32bit符号なし整数の集合を保持する簡潔データ構造です。
各種操作を で行うことができるコンパクトなツリー構造です。
bool empty() const noexcept
ベクタが空かどうかを判定する
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
void swap(Bp &rhs) noexcept
オブジェクトの内容をスワップします。
ストリーム(OutputStream)にバイナリを書き込むクラスです。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
constexpr Bp() noexcept
コンストラクタです。
bool Init(uint32_t bv_size) noexcept
オブジェクトを初期化します。
ストリーム(InputStream)からバイナリを読み込むクラスです。
int Parent(uint32_t pos) const noexcept
親ノードとなる括弧の位置を返します。
PODを要素に持つベクタをreallocベースで実装しています。