18template<
int64_t InlineBufferCapacity = 64,
typename Allocator = GuardedAllocator>
29 int64_t aligned_group_size_ = 0;
52 const bool value =
false,
53 Allocator allocator = {})
55 aligned_group_size_(align_group_size(
group_size)),
56 data_(size_in_groups * aligned_group_size_, value, allocator)
63 : group_size_(other.group_size_),
64 aligned_group_size_(other.aligned_group_size_),
70 : group_size_(other.group_size_),
71 aligned_group_size_(other.aligned_group_size_),
72 data_(std::move(other.data_))
89 const int64_t offset = aligned_group_size_ * i;
97 const int64_t offset = aligned_group_size_ * i;
105 return aligned_group_size_ == 0 ? 0 : data_.
size() / aligned_group_size_;
110 return this->
size() == 0;
142using bits::BitGroupVector;
MutableBoundedBitSpan all_bits()
BoundedBitSpan all_bits() const
MutableBoundedBitSpan operator[](const int64_t i)
BitGroupVector & operator=(const BitGroupVector &other)
BitGroupVector(Allocator allocator={}) noexcept
BitGroupVector(NoExceptConstructor, Allocator allocator={}) noexcept
BitGroupVector(const int64_t size_in_groups, const int64_t group_size, const bool value=false, Allocator allocator={})
BitGroupVector(const BitGroupVector &other)
IndexRange index_range() const
BitGroupVector & operator=(BitGroupVector &&other)
int64_t group_size() const
BitGroupVector(BitGroupVector &&other)
BoundedBitSpan operator[](const int64_t i) const
static constexpr BitInt BitIndexMask
static constexpr int64_t BitsPerInt
static constexpr int64_t BitToIntIndexShift
Container & copy_assign_container(Container &dst, const Container &src)
Container & move_assign_container(Container &dst, Container &&src) noexcept(std::is_nothrow_move_constructible_v< Container >)