Re: initializing bitset with variable number of bits
zacariaz@gmail.com wrote:
:: On 12 Maj, 00:23, "Victor Bazarov" <v.Abaza...@comAcast.net> wrote:
::: zacar...@gmail.com wrote:
:::: The subject isnt very clear, but ill do my best to explain.
:::
:::: In a class in need a bitset which size is defined by the
:::: constructor, e.g. something like this:
:::
:::: class Example {
:::: std::bitset<?>Bs;
:::
::: Since the size of the bitset is part of its _type_ definition,
::: bitsets with different sizes would mean that your 'Example' would
::: have members of different types. That means those are different
::: 'Example' _types_. You can only achieve that by making 'Example' a
::: template.
:::
:::: public:
:::: Example(int input) {
:::: ? = input;
:::: }
:::: };
:::
:::: Now, my knowledge in c++ is simply to limited to work around this.
:::
::: Actually, C++ is simply limited, not your knowledge. C++ does not
::: allow to have the same _class_ to contain different types of members
::: depending on some run-time condition.
:::
:::: I
:::: know that in order to use a variable to initialize a bitset, it
:::: has to be constant, but allso the constant variable has to be
:::: initialized imidiadly, and ofcourse it all has to be done in the
:::: right order, otherwise nothing will make sence or work for that
:::: matter. Im confused and i hope you canhelp.
:::
::: template<size_t n>
::: class Example {
::: std::bitset<n> Bs;
::: public:
::: ...
:::
::: };
:::
::: ...
::: Example<12> e12;
::: ...
:::
::: Now, _types_ have to be fixed at the compile time. You cannot
::: create types during run-time. That's the main limitation.
:::
::: Perhaps you can roll your own "bitset", instead of using the
::: standard template... Think 'std::vector<bool>', which has dynamic
::: _size_.
:::
:: I thought vector<bool> was obsolete, but it might the solution,
:: however it is my experience, and i might be wrong, that vector<bool>
:: uses one byte of memory per bool, and if that the case it is
:: definently not the solution.
::
:: Anyhow, thanks for now.
No, vector<bool> uses one bit per element, which IS its problem. This might
be good for you, but in general we would expect a vector<bool> to store
bools.
Bo Persson