std::vector<bool>
Defined in header <vector>
|
||
template<class Allocator = std::allocator<bool>> class vector<bool, Allocator>; |
||
std::vector<bool> is a space-efficient specialization of std::vector for the type bool.
The manner in which std::vector<bool> is made space efficient (as well as whether it is optimized at all) is implementation defined. One potential optimization involves coalescing vector elements such that each element occupies a single bit instead of a byte-sized bool.
std::vector<bool> behaves similarly to std::vector, but in order to be space efficient, it:
- Does not necessarily store its data in a single contiguous chunk of memory.
- Exposes std::vector<bool>::reference as a method of accessing individual bits.
- Does not use std::allocator_traits::construct to construct bit values.
Contents |
Member types
Member functions
Non-member functions
Helper classes
Notes
If the size of the bitset is known at compile time, std::bitset may be used, which offers a richer set of member functions. In addition, boost::dynamic_bitset exists as an alternative to std::vector<bool>
.
Since its representation may by optimized, std::vector<bool> does not necessarily meet all Template:concept or Template:concept requirements. For example, because std::vector<bool>::iterator is implementation-defined, it may not satisfy the Template:concept requirement. Use of algorithms such as std::search that require Template:concepts may result in either compile-time or run-time errors.