pasta_bit_vector
1.0.1
Bit Vector with Compact and Fast Rank and Select Support
|
Rank support for BitVector
.
More...
#include <rank.hpp>
Public Member Functions | |
Rank ()=default | |
Default constructor w/o parameter. | |
Rank (VectorType &bv) | |
Constructor. Creates the auxiliary information for efficient rank queries. | |
Rank (Rank &&other)=default | |
Default move constructor. | |
Rank & | operator= (Rank &&other)=default |
Default move assignment. | |
~Rank ()=default | |
Destructor. Deleting manually created arrays. | |
size_t | rank0 (size_t index) const |
Computes rank of zeros. | |
size_t | rank1 (size_t index) const |
Computes rank of ones. | |
virtual size_t | space_usage () const |
Estimate for the space usage. | |
Public Attributes | |
size_t | data_size_ |
Size of the bit vector the rank support is constructed for. | |
VectorType::RawDataConstAccess | data_ |
Pointer to the data of the bit vector. | |
size_t const | bit_size_ |
Size of the bit vector in bits (only used for debug asserts) | |
tlx::SimpleVector< uint64_t, tlx::SimpleVectorMode::NoInitNoDestroy > | l0_ |
Array containing the number of set bits in the L0-blocks. | |
tlx::SimpleVector< L12Type, tlx::SimpleVectorMode::NoInitNoDestroy > | l12_ |
Array containing the information about the L1- and L2-blocks. | |
The rank support is based on popcount and described in detail by Zhou et al. [2]. The data structure consists of three levels (L0, L1, and L2) that contain different information regarding the popcount of the current block or all previous blocks.
Note that rank support is also provided in addition to select support by RankSelect
, which uses this rank support implementation internally.
OptimizedFor | Compile time option to optimize data structure for either 0, 1, or no specific type of query. |
VectorType | Type of the vector the rank data structure is constructed for, e.g., plain BitVector or a compressed bit vector. |
|
inline |
Constructor. Creates the auxiliary information for efficient rank queries.
bv | Vector of type VectorType the rank structure is created for. |
|
default |
Default move constructor.
other | Other rank data structure. |
|
default |
Default move assignment.
other | Other rank data structure. |
|
inlinenodiscard |
Computes rank of zeros.
index | Index the rank of zeros is computed for. |
index
.
|
inlinenodiscard |
Computes rank of ones.
index | Index the rank of ones is computed for. |
index
.
|
inlinenodiscardvirtual |
Estimate for the space usage.
Reimplemented in pasta::RankSelect< optimized_for, VectorType >.