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

¿Fue útil?

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
scroll top