Simple C++ dynamic bit array. It is like
std::bitset but its size can be dynamically set. The bits are stored from left-to-right order as if in an array, where the leftmost bit is the
0th and the rightmost bit is the
Under the hood, bits are stored in a byte array, and the rightmost
8-(n%8) bits in the rightmost byte remain unused when
n is not a multiple of
The code is compiled under both
GCC, and tested using Google C++ testing framework (http://code.google.com/p/googletest/).
ds.dynamicbitset.test.h file for usage.
- You can create a bit-array whose size can be set dynamically set. This is in contrast with
std::bitsetfor which the size needs to be set in compile-time through template argument.
- You can create of empty (zero-size) bit-array which can be later initialized from any existing bit-array.
- You can get/set any bit. You can also set bits from an integer, where the higher-order bits of the supplied integer are copied to the bit-array.
- You can perform any/all/flip operations on the bit-array.
- You can perform standard bit-by-bit comparison operations between two bit-arrays. Supported comparisons are
<, <=, >, >=, !=, ==.
- You can extract a particular byte from the bit array.
- You can convert the bit-array into an
const unsigned char*, or even an
int. The last conversion is possible if the size of the bit-array is less than the number of bits in an
- You can print a bit-array through an output stream like
cout << myBitArray.
- Standard bitwise operations between two