As (hopefully) we all know, vector<bool>
is totally broken and can't be treated as a C array. What is the best way to get this functionality?
So far, the ideas I have thought of are:
vector<char>
instead, orvector<bool_wrapper>
How do you guys handle this problem? I need the c_array()
functionality.
As a side question, if I don't need the c_array()
method, what is the best way to approach this problem if I need random access? Should I use a deque or something else?
Edit:
vector<bool>
is specialized so that each bool
takes 1 bit. Thus you can't convert it to a C-style array.Of course, then I have to read into a my_bool
due to possible alignment issues :(
struct my_bool
{
bool the_bool;
};
vector<my_bool> haha_i_tricked_you;
Use std::deque
if you don't need the array, yes.
Otherwise use an alternative vector
that doesn't specialize on bool
, such as the one in Boost Container.