は、私はものがnullのフラグにパラメータの数と整数を受け取り、リモートサービスがあります。私は素朴な実装を試してみたビットの設定方法は?
byte<(param_count + 7)/8> null bitmap
を私はビットシフトで何の経験をしたんので、私は思いますむしろそれを示していない。
ブール値のベクトルを考えると、私はどのようにビットマップを作成できますか?
は、私はものがnullのフラグにパラメータの数と整数を受け取り、リモートサービスがあります。私は素朴な実装を試してみたビットの設定方法は?
byte<(param_count + 7)/8> null bitmap
を私はビットシフトで何の経験をしたんので、私は思いますむしろそれを示していない。
ブール値のベクトルを考えると、私はどのようにビットマップを作成できますか?
param_count
がコンパイル時にわかっている場合は、std::bitset
を使用できます。次に例を示します。
// Define a bitmap with 'param_count + 7' elements
std::bitset<param_count + 7> b;
// Set the fifth bit, zero is the first bit
b[4] = 1;
// Convert to 'unsigned long', and the casting it to an int.
int a = int(b.to_ulong());
param_count
がコンパイル時に知られてされていない場合、あなたはstd::vector<bool>
を使用することができます。
// Define a bitmap with 'param_count + 7' elements
std::vector<bool> b(param_count + 7);
// Set the fifth bit, zero is the first bit
b[4] = 1;
// Convert to 'int'
int a = std::accumulate(b.rbegin(), b.rend(), 0, [](int x, int y) { return (x << 1) + y; });
int
へstd::vector<bool>
から変換はthis answerから取得され:ここで別の例です。
@ Rakete1111そうです、私は 'ベクトル
param_countはコンパイル時には分かりません。 – ruipacheco
'std :: vector'はビットマップです。 'std :: bitset'のように:http://en.cppreference.com/w/cpp/utility/bitset –
Jonas
' std :: vector 'を整数に変換するにはどうしたらいいですか? –
ruipacheco
'bitset'を使うなら' to_ulong'メソッドを使うことができます。ベクトル実装では、フードの下でビットセットを使用することがありますが、必ずしもそうする必要はありません。 –