問題タブ [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.
c++ - std::bitset にイテレータが付いていないのはなぜですか?
std::bitsetにはSTL イテレータが付属していないようです。
したがって、次のことはできません。
代わりに、次のことを行う必要があります。
イテレータがないと、STL アルゴリズムでビットセットを使用することもできません。
委員会がイテレータをビットセットから除外することを決定したのはなぜですか?
c++ - std::bitset を 2 つに分割しますか?
DES アルゴリズムを実装してstd::bitset<56> permutationKey
おり、2 つに分割する必要があります。
に型キャストしようとしbitset<56>
ましbitset<28>
たが、うまくいきませんでした。
同じことを達成する他の方法は、反復して各ビットを個別に割り当てることです。ループを使わずに達成したいのですが、別の方法が必要です。
プリミティブ型でできました
どうすればbitset
このように分割できますか?
c++ - C++ でビット配列を実装する方法
(メンバー変数として) ビットの配列を含む C++ テンプレート クラスを作成しようとしています。ビット配列のサイズはコンパイル時にわかっているので、 にしたいのですが、ビットを設定する関数をstd::bitset
書くのに苦労しています。operator[]
たとえば、クラスを次のように開始したいと思います。
ゲッターは正常に動作します。問題は、 setter 関数が、それ自体がテンプレート化された( ではない) をstd::bitset::operator[]
返すことです。テンプレートの経験はあまりありませんが、次の試みは失敗しました:std::bitset::reference
bool&
次のエラーが表示されますneed 'typename' before 'std::bitset<K>::reference' because 'std::bitset<K>' is a dependent scope
。私はいくつかのグーグルを試しましたが、役に立ちませんでした。
std::bitset
このタスクに適したツールはありますか? もしそうなら、どのようにセッター関数を書くことができますか? そうでない場合、代わりに何を使用できますか? (配列サイズをコンパイル時に厳密に固定したいので、実際にはビットとして格納しstd::vector<bool>
たいのですが、あまり正しくないようです)。
c++ - C++ で uint8_t 配列をビットセットに変換する
uint8_t の配列をバイトセットに変換する簡単な方法はありますか。
私はこれを試しましたが、動作しません
c++ - 16 進数を含む std::string または QString から std::bitset または QBitArray を作成します
std::bitset
バイナリシフト操作を実行せずに、16 進数から aを構築する方法、std::string
またはQString
その逆を行う方法はありますか? その方法は知っていますが、C++ストリームなどを使用してこれを行うことができるかどうか疑問に思っていました.
これまでの私のコードは次のとおりです(モデレーターの攻撃を回避しようとしています):
c++ - ビットセット データは逆順で格納されていますか?
私は試してstd::bitset
いましたが、しばらく間違った結果を得た後、結果が逆の順序になっていることに気付きました。cppreferenceページで検索を試みましたが、これに関するソースが見つからなかったため、確認が必要です。これは、異なるコンパイラ間でもデフォルトの動作である必要がありますか?
1000011
1100001
c++ - ビットセット内のセットビットのランダムな位置を選択する C++ の最良の方法
私はstd::bitset<32> word
ランダムに選択し、1 であるビットのインデックス (0-31) を選択したいと考えています。ループとカウンターなしでそれを行うにはどうすればよいですか。std::algorithm
それに適したものはありますか?より簡単な場合は、を文字列または整数に変換してbitset
、文字列または整数で作成できます。
c++ - std::bitset のビット範囲の値を変更する最も効率的な方法
bitset 内のビット範囲の値を変更するには、複雑さの少ない効率的な方法が必要です。
たとえば、100 から 500 までの値を TRUE に設定する必要があります。
最小限の複雑さでこれを達成するための最速の方法は何ですか?
ループを使用するだけでは十分ではありません。
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
のは私のコンパイラ設定です。gccとclangを使用しました。