문제
비트 마스크를 배열 인덱스로 변환하는 간단한 방법이 있습니까?
즉. 열거가 있다면
a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10,
etc
그리고 선출 된 데이터를 배열에 저장하고 싶습니다. A를 0, b로 1, c에서 2로 변환 할 수있는 간단한 방법이 있습니까?
많은 감사합니다
해결책
r = ln base 2
and programmatically,
unsigned int v=yourEnumValue;
unsigned r = 0;
while (v >>= 1)
{
r++;
}
r is your answer
다른 팁
이것이 당신이 묻는 것인지 확실하지 않지만 왜 2베이스 로그를 가져 가지 않습니까?
통나무2 N?
나는 당신이 요청한 것과 같은 간단한 솔루션을 모르지만 왜 배열 대신지도를 사용하지 않습니까?
마법의 변환없이 작동해야합니다.
STD ::지도를 사용하십시오 :
#include <map>
std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
제휴하지 않습니다 StackOverflow