비트 마스크를 배열 인덱스로 변환하는 간단한 방법이 있습니까?배열 대 비트 마스크
즉. 내가 열거
a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10,
etc
있어 내가 배열에 releated 데이터를 저장할 경우, 간단한 방법은 내가 2 등으로 c를 1로 B, 0으로 변환 할 수 있도록 있는가?
많은 감사
비트 마스크를 배열 인덱스로 변환하는 간단한 방법이 있습니까?배열 대 비트 마스크
즉. 내가 열거
a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10,
etc
있어 내가 배열에 releated 데이터를 저장할 경우, 간단한 방법은 내가 2 등으로 c를 1로 B, 0으로 변환 할 수 있도록 있는가?
많은 감사
r = ln base 2
and programmatically,
unsigned int v=yourEnumValue;
unsigned r = 0;
while (v >>= 1)
{
r++;
}
r is your answer
정확히 내가 생각하고 있었던 것. – jrockway
누군가가 더 낮은 수준의 솔루션을 더 빨리 알고 있습니까? – clankill3r
난 당신이 요청하지만, 왜 그냥 대신 배열을지도를 사용하지 같은 간단한 해결책을 몰라?
마법 변환없이 작동해야합니다.
로그 n?
성병 : :지도 사용
#include <map>
std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
나는 키를 저장하는 오버 헤드를 원하지 않기 때문에 맵을 사용하고 싶지 않다. – Dynite
열거 형의 오버 헤드는 작을 것입니다. 색인을 계산하는 오버 헤드와 비교해야합니다. –
당신이 체크 아웃 할 수 있습니다 : http://referencesource.microsoft.com/#PresentationFramework/Framework/MS/Internal/UncommonValueTable.cs를 , 93b81e5e13cb3600 (서로 다른 크기의 어레이에 대해 비트 마스크를 유지함) – zahir