Difference between revisions of "cpp/container/vector bool"
From cppreference.com
Spacehacker (Talk | contribs) (The actual optimization is implementation-defined) |
(wording) |
||
Line 6: | Line 6: | ||
}} | }} | ||
− | {{c|std::vector<bool>}} is a space-efficient specialization of {{c|std::vector}} for the type {{c|bool}}. The | + | {{c|std::vector<bool>}} is a space-efficient specialization of {{c|std::vector}} for the type {{c|bool}}. |
+ | |||
+ | The manner in which {{c|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 {{c|bool}}. | ||
{{c|std::vector<bool>}} behaves similarly to {{c|std::vector}}, but in order to be space efficient, it: | {{c|std::vector<bool>}} behaves similarly to {{c|std::vector}}, but in order to be space efficient, it: |
Revision as of 15:12, 3 October 2012
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
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>
.