ビットマスクを配列インデックスに変換する簡単な方法はありますか?
すなわち。列挙型がある場合
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::map を使用します。
#include <map>
std::map <my_enum, my_datatype> m;
m[ a ] = whatever;