|
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.
|
|
template<
OptimizedFor optimized_for = OptimizedFor::DONT_CARE, typename VectorType = BitVector>
class pasta::Rank< optimized_for, VectorType >
Rank support for BitVector
.
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.
- Template Parameters
-
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. |