Maschera di bit all'indice Array
Domanda
C'è un modo semplice per convertire una maschera di bit in un indice di matrice?
es. Se ho un enum
a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10,
etc
e voglio per memorizzare i dati in un array releated, c'è un modo semplice tale che posso convertire un a 0, b per 1, c a 2. etc?
Grazie
Soluzione
r = ln base 2
and programmatically,
unsigned int v=yourEnumValue;
unsigned r = 0;
while (v >>= 1)
{
r++;
}
r is your answer
Altri suggerimenti
Non sono sicuro se questo è quello che stai chiedendo, ma perché non basta prendere un log 2-base?
Entra 2 n
Non so una soluzione semplice come avete chiesto, ma perché non basta usare una mappa invece un array?
Dovrebbe funzionare senza alcuna conversione magia.
Usa uno std :: map:
#include <map>
std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow