variable tipos tipo tamaño son rangos rango que ocupa memoria los longitud lenguaje float datos cuanta caracter bytes c++ bitset

tamaño - tipos de variables en c++ y sus rangos



Definir el tamaño del conjunto de bits en la inicialización? (6)

Boost tiene un dynamic_bitset que puedes usar.

Alternativamente, puede usar un vector<bool> , que (desafortunadamente) está especializado para actuar como un conjunto de bits. Esto causa mucha confusión, y en general se considera una mala idea. Pero así es como funciona, así que si eso es lo que necesita, debería usarlo, supongo.

Quiero hacer un conjunto de bits en C ++. Hice un poco de investigación. Todos los ejemplos que encontré fueron así:

bitset<6> myBitset; // do something with it

Pero no sé el tamaño del conjunto de bits cuando defino la variable en mi clase:

#include <bitset> class Test { public: std::bitset *myBitset; }

Esto no compilará ...

Y inicializar así tampoco funciona:

int size = getDependentSizeForBitset(); myBitset = new bitset<size>();


Deberías revisar boosts dynamic_bitset.


Lo que dices al principio no es cierto. Los "ejemplos que encontraste" no se veían como lo habías publicado. Es imposible usar un valor no constante para parametrizar una plantilla. Entonces, tu primer ejemplo no es válido. Solo las expresiones constantes pueden servir como argumentos no tipográficos para una plantilla. Es decir, el argumento de no tipo tiene que ser una constante de compilación.

Parece que desea crear un conjunto de bits cuyo tamaño no sea una constante de compilación. En este caso la plantilla de bitset está fuera de discusión. Necesita una implementación de bitset de tamaño en tiempo de ejecución. Por ejemplo, puede usar std::vector<bool> - en muchas implementaciones (si no todas), esta plantilla está especializada para implementar una matriz empaquetada de valores booleanos, donde cada elemento ocupa un bit (a diferencia de un objeto bool ).


Puede hacer de su clase una plantilla para que el tamaño de conjunto de std::bitset determinado hasta que su clase se ejemplifique. Puedes hacerlo así:

#include <bitset> template<int size> class Test { public: std::bitset<size> bitset; //... }

Entonces para usar tu clase tendrías que hacer esto:

int exampleSize = 42; Test<exampleSize> name;



el conjunto de bits requiere tamaño como parámetro de plantilla, lo que significa que el tamaño debe poder determinarse en tiempo de compilación. No se puede basar en una condición de tiempo de ejecución, como la entrada del usuario.

Para eso, debes mirar en std :: vector o boost :: dynamic_bitset. std :: vector es una creación de instancias de plantilla especializada que utiliza un bit por elemento. A diferencia del conjunto de bits, se puede dimensionar dinámicamente.