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...