Pergunta

Existe uma maneira simples para converter uma máscara de bits para um índice matriz?

ie. Se eu tenho um enum

a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10, 
etc

e eu quero armazenar dados releated em uma matriz, existe uma maneira simples de tal forma que eu posso converter uma a 0, b a 1, c a 2. etc?

Muitos agradecimentos

Foi útil?

Solução

r =   ln base 2 
and programmatically,

unsigned int v=yourEnumValue;
unsigned r = 0; 
while (v >>= 1) 
{
   r++;
}

r is your answer

Outras dicas

Eu não tenho certeza se é isso que você está perguntando, mas por que você não basta ter um log 2-base?

Log 2 n?

Eu não sei uma solução simples como você pediu, mas porque não basta usar um mapa, em vez de uma matriz?

deve funcionar sem qualquer conversão magia.

Use um std :: map:

#include <map>

std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top