質問
配列のインデックスにしてビットマスクを変換するための簡単な方法はありますか?
すなわち。私は列挙型を持っていれば、
a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10,
etc
と私は配列にreleatedデータを格納したい、私は2などにC、B 1に、0に変換することができるような簡単な方法は何ですか?
多くの感謝
解決
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