This question already has an answer here:
- Define bitset size at initialization? 6 answers
I am practicing a question on array in which I have to find unique elements. Now for this my logic is to find the max element in the array and define the bitset for that. But problem is bitset needs a constant value so how to overcome this, below are some of my question on this:
a) Can I, by any chance, define the bitset with a variable size?
b) If not, then what is the best approach to use vector<bool>
or vector<char>
?
c) I know boost has a dynamic bitset but as I am doing this for learning I want to know of alternate approaches.
The
std::bitset<N>
template requires a fixed size in advance. Thestd::vector<bool>
is the C++ standard's way of providing a variable-length bitvector, and it offers functionality similar to a bitset that can grow and shrink.As for whether it's better or worse to use
vector<char>
orvector<bool>
: thevector<bool>
is a much more direct way of accomplishing this goal. I would start off by using it, then switch tovector<char>
if the performance is unacceptable. In general, it's good to try to write the cleanest, most straightforward implementation first, then to optimize later on.Hope this helps!