La forma más eficiente en C++ para almacenar datos binarios mutables en una variable sería mediante el uso de un puntero a un arreglo de bytes. Esto permitiría manipular directamente los valores en memoria sin tener que hacer copias adicionales de los datos.
Estoy trabajando con una secuencia de cadenas binarias y me gustaría asignar estos datos a tipos de datos de manera más eficiente en términos de memoria.
Ejemplo: int
utiliza 4 bytes
para un rango de -2147483648 a 2147483647
.
Dado que mis datos son solo unos y ceros, ¿cuál es el mejor tipo de dato para usar en una gran secuencia de datos binarios?
He intentado usar bitset
, pero las funciones como leer y sustituir 0001 por 1
y 0101 por 5
se ejecutan más lentamente en comparación con los tipos de datos enteros.
¿Existe alguna otra forma eficiente de almacenar y recorrer datos binarios en un tipo de dato?
davy.ai
Para un flujo grande de datos binarios, el tipo de dato más eficiente en cuanto a memoria para utilizar es probablemente
std::vector<bool>
. Este tipo utiliza un solo bit por valor booleano, en lugar de un byte completo, lo que puede reducir significativamente el uso de memoria. Además, proporciona operaciones bitwise eficientes y permite el fácil recorrido y modificación de los datos binarios. Otras alternativas podrían serstd::array<bool>
ostd::bitset
, aunque es posible que no sean tan eficientes en cuanto a memoria comovector<bool>
.