4

で使用されている整数をどのように変更しbitsetますか? たとえば、32 などの数値のビットを格納bitsetする変数を宣言していたmybitsetとします。いくつかの操作を行った後、63 などの別の数値のビットを格納したいと考えmybitsetています。これを行うにはどうすればよいでしょうか。

説明を助けるために、以下に小さなサンプル コードを追加しました。

bitset<32> mybits(32);
....
mybits(63);  // gives compilation error here, stating "no match for call to '(std::bitset<32u>) (uint&)'" 

これを行うための簡単な方法が必要だと思いますが、何も見つけることができませんでした。

4

4 に答える 4

4

どちらかを使用できます

mybits = bitset<32>(63);

他の回答が指摘したように、または単に

mybits = 63;

後者が機能するのは、63 が暗黙的に a に変換可能であるためですbitset<32>(コンストラクター fromlongは としてマークされていないためexplicit)。最初のバージョンと同じことを行いますが、少し冗長です。

于 2015-08-25T17:23:21.610 に答える
2

参照ドキュメントからのように

bitsetCopyConstructibleおよびの要件を満たしていますCopyAssignable

std::bitsetしたがって、同じテンプレート パラメーター シグネチャに一致する別のものから簡単に割り当てることができます。

bitset<32> mybits(32);
// ....
mybits = bitset<32>(63);

または、左辺値の型推論に沿って暗黙のコンストラクター (2) のいずれかを使用します。

bitset( unsigned long val ); // (until C++11)
constexpr bitset( unsigned long long val );

値を直接割り当てます。

mybits = 63;
于 2015-08-25T17:27:57.107 に答える
1

ただ電話してください: myBits = std::bitset<32>{63};

于 2015-08-25T17:23:13.540 に答える
1

Astd::bitsetはコピー割り当て可能であるため、目的の値で新しいものを作成し、それを変更するビットセットに割り当てます。

bitset<32> mybitset{21};
mybitset = bitset<32>{42};

タイプをもう一度指定したくない場合はdecltype、bitsets コンストラクターが明示的でないという事実を使用するか、さらに良い方法で使用できます。

mybitset = {42};

活動中)

于 2015-08-25T17:25:59.643 に答える