問題タブ [std-bitset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
11482 参照

c++ - std::bitset にイテレータが付いていないのはなぜですか?

std::bitsetにはSTL イテレータが付属していないようです。
したがって、次のことはできません。

代わりに、次のことを行う必要があります。

イテレータがないと、STL アルゴリズムでビットセットを使用することもできません。
委員会がイテレータをビットセットから除外することを決定したのはなぜですか?

0 投票する
2 に答える
2116 参照

c++ - std::bitset を 2 つに分割しますか?

DES アルゴリズムを実装してstd::bitset<56> permutationKeyおり、2 つに分割する必要があります。

に型キャストしようとしbitset<56>ましbitset<28>たが、うまくいきませんでした。

同じことを達成する他の方法は、反復して各ビットを個別に割り当てることです。ループを使わずに達成したいのですが、別の方法が必要です。

プリミティブ型でできました

どうすればbitsetこのように分割できますか?

0 投票する
1 に答える
1113 参照

c++ - C++ でビット配列を実装する方法

(メンバー変数として) ビットの配列を含む C++ テンプレート クラスを作成しようとしています。ビット配列のサイズはコンパイル時にわかっているので、 にしたいのですが、ビットを設定する関数をstd::bitset書くのに苦労しています。operator[]

たとえば、クラスを次のように開始したいと思います。

ゲッターは正常に動作します。問題は、 setter 関数が、それ自体がテンプレート化された( ではない) をstd::bitset::operator[]返すことです。テンプレートの経験はあまりありませんが、次の試みは失敗しました:std::bitset::referencebool&

次のエラーが表示されますneed 'typename' before 'std::bitset<K>::reference' because 'std::bitset<K>' is a dependent scope。私はいくつかのグーグルを試しましたが、役に立ちませんでした。

std::bitsetこのタスクに適したツールはありますか? もしそうなら、どのようにセッター関数を書くことができますか? そうでない場合、代わりに何を使用できますか? (配列サイズをコンパイル時に厳密に固定したいので、実際にはビットとして格納しstd::vector<bool>たいのですが、あまり正しくないようです)。

0 投票する
1 に答える
2529 参照

c++ - C++ で uint8_t 配列をビットセットに変換する

uint8_t の配列をバイトセットに変換する簡単な方法はありますか。

私はこれを試しましたが、動作しません

0 投票する
4 に答える
1658 参照

c++ - 16 進数を含む std::string または QString から std::bitset または QBitArray を作成します

std::bitsetバイナリシフト操作を実行せずに、16 進数から aを構築する方法、std::stringまたはQStringその逆を行う方法はありますか? その方法は知っていますが、C++ストリームなどを使用してこれを行うことができるかどうか疑問に思っていました.

これまでの私のコードは次のとおりです(モデレーターの攻撃を回避しようとしています):

0 投票する
1 に答える
774 参照

c++ - ビットセット データは逆順で格納されていますか?

私は試してstd::bitsetいましたが、しばらく間違った結果を得た後、結果が逆の順序になっていることに気付きました。cppreferenceページで検索を試みましたが、これに関するソースが見つからなかったため、確認が必要です。これは、異なるコンパイラ間でもデフォルトの動作である必要がありますか?

1000011

1100001

0 投票する
2 に答える
1305 参照

c++ - ビットセット内のセットビットのランダムな位置を選択する C++ の最良の方法

私はstd::bitset<32> wordランダムに選択し、1 であるビットのインデックス (0-31) を選択したいと考えています。ループとカウンターなしでそれを行うにはどうすればよいですか。std::algorithmそれに適したものはありますか?より簡単な場合は、を文字列または整数に変換してbitset、文字列または整数で作成できます。

0 投票する
1 に答える
861 参照

c++ - std::bitset のビット範囲の値を変更する最も効率的な方法

bitset 内のビット範囲の値を変更するには、複雑さの少ない効率的な方法が必要です。

たとえば、100 から 500 までの値を TRUE に設定する必要があります。

最小限の複雑さでこれを達成するための最速の方法は何ですか?

ループを使用するだけでは十分ではありません。

0 投票する
1 に答える
294 参照

c++ - 「0 1 1 0 1」の形式の文字列をビットセットにすばやく変換する

スペースで区切られた 1 と 0 の文字列をすばやく変換するにはどうすればよいbitsetですか?

bitsetスペースで区切られていない文字列から a を初期化するコンストラクタ、abitsetをすべてゼロまたは 1 に初期化するコンストラクタ、および整数から初期化するコンストラクタが存在します。頭のてっぺんから、次の 3 つの方法を考えることができます。

  • 文字列からスペースを削除し、コンストラクターに渡します
  • バイナリを整数に変換してコンストラクタに渡す
  • すべての値をゼロに初期化し、for ループの文字列に従って各ビットの値を変更する

ビット数は 24 で、各文字列はちょうど 24 ビットで、それ以上でもそれ以下でもありません。

編集: パフォーマンスをテストするために使用するコードは次のとおりです。メソッド1と2のコードは次のとおりです。私のマシンでは、方法 1 に 3 ミリ秒、方法 3 に 14 ミリ秒かかります。

EDIT 2:私が使用する-O3 -o -g --std=c++11のは私のコンパイラ設定です。gccclangを使用しました。