Using vector<bool> for variable-size sequences of bits
In the previous recipe, we looked at using std::bitset
for fixed-size sequences of bits. Sometimes, however, std::bitset
is not a good choice because you do not know the number of bits at compile time, and just defining a set of a large enough number of bits is not a good idea. This is because you can get into a situation where the number is not actually large enough. The standard alternative for this is to use the std::vector<bool>
container, which is a specialization of std::vector
with space and speed optimizations since implementations do not actually store Boolean values, but individual bits for each element.
For this reason, however, std::vector<bool>
does not meet the requirements of a standard container or sequential container, nor does std::vector<bool>::iterator
meet the requirements of a forward iterator. As a result, this specialization cannot be used in generic code where a...