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

追記可能な圧縮された整数配列です。 [詳解]

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

公開メンバ関数

bool PushBack (uint32_t x) noexcept
 データを追加します。64個単位の長さになるとデータを圧縮します。 [詳解]
 
uint32_t operator[] (size_t idx) const noexcept
 インデックスを指定して値を取り出します。 [詳解]
 
size_t Size () const noexcept
 配列の長さを取得します。
 
void Reset () noexcept
 オブジェクトをコンストラクタが呼ばれた直後の状態にします。
 
size_t MemSize () const noexcept
 このクラスが明示的に確保するメモリ量を返します。 [詳解]
 
基本的なメンバ関数
 CompressedArray () noexcept
 コンストラクタです。
 
 ~CompressedArray () noexcept
 デストラクタです。
 
 CompressedArray (CompressedArray &rhs, move_tag) noexcept
 swapを利用したムーブによりオブジェクトを構築します。
 
CompressedArrayassign (CompressedArray &rhs, move_tag) noexcept
 swapを利用したムーブにより代入します。
 
 CompressedArray (CompressedArray &&rhs) noexcept
 ムーブコンストラクタです。C++11の利用時に有効です。
 
CompressedArrayoperator= (CompressedArray &&rhs) noexcept
 ムーブ代入演算子です。C++11の利用時に有効です。
 
void swap (CompressedArray &rhs) noexcept
 オブジェクトの内容をスワップします。
 
インポートとエクスポート
bool Export (BinaryWriter *w) const noexcept
 オブジェクトを(ファイルに)書き出します。 [詳解]
 
bool Import (BinaryReader *r) noexcept
 書き出されたオブジェクトを読み出します。 [詳解]
 

詳解

追記可能な圧縮された整数配列です。

説明
整数配列を64個ずつのブロックにわけ、ブロックの代表値と代表値からの64個の差分を記録しています。 差分値はブロックごとに一定のビット幅に詰めて格納しています。 代表値と差分を足すというごく簡単な計算で値に対するランダムアクセスが可能です。
簡単な方法の割には小さい値の割合が多いデータを格納する場合の圧縮率が高く、そのまま配列を格納した場合の1/2から1/4のサイズにすることができる場合が多いです。

Sbv.h178 行目に定義があります。

関数詳解

§ Export()

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

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

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

§ Import()

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

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

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

§ MemSize()

nn::nlib::succinct::CompressedArray::MemSize ( ) const
noexcept

このクラスが明示的に確保するメモリ量を返します。

戻り値
バイト数
説明
実際にシステムが確保するメモリ量はアライメントやヒープの管理領域の関係上この関数の返り値より大きい可能性があります。

§ operator[]()

nn::nlib::succinct::CompressedArray::operator[] ( size_t  idx) const
noexcept

インデックスを指定して値を取り出します。

引数
[in]idx配列のインデックス
戻り値
配列の値。idx が範囲外の場合は0

§ PushBack()

nn::nlib::succinct::CompressedArray::PushBack ( uint32_t  x)
inlinenoexcept

データを追加します。64個単位の長さになるとデータを圧縮します。

引数
[in]x追加する値
戻り値
成功した場合true

Sbv.h194 行目に定義があります。


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