Máscara de bits de índice de matriz
Pregunta
¿Hay una manera simple de convertir una máscara de bits para un índice de matriz?
ie. Si tengo una enumeración
a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10,
etc
y quiero para almacenar datos releated en una matriz, hay una manera sencilla de tal manera que i puede convertir una a 0, b a 1, c a 2. etc?
Muchas gracias
Solución
r = ln base 2
and programmatically,
unsigned int v=yourEnumValue;
unsigned r = 0;
while (v >>= 1)
{
r++;
}
r is your answer
Otros consejos
No estoy seguro si esto es lo que preguntas, pero ¿por qué no acaba de tomar un registro de 2-base?
Log 2 n?
No sé una solución tan simple como usted pidió, pero ¿por qué no usar un mapa en lugar de una matriz?
En caso de trabajar sin ninguna conversión magia.
Utilice un std :: mapa:
#include <map>
std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow