問題タブ [boost-dynamic-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++ - ビットストリングをデクリメントする方法は?
ビット文字列のデクリメント演算子が必要です。私は現在、次のように定義されたインクリメント演算子を持っています:
ビット文字列でどのようにデクリメントしますか?
c++ - 1 つの 0、2 つの 0、n の 0 まで、すべてのビット文字列を反復処理する方法は?
次のようにビット文字列をインクリメントする関数があります。
インクリメントが呼び出されるのと同じ方法で呼び出される関数が必要ですが、ビット文字列を別の方法で変更します。呼び出されるたびに、前のビット文字列と同じ数の 0 を持つ次のビット文字列を取得したいと考えています。
たとえば、ビット文字列の長さが 10 の場合、この関数の最初の 10 回の呼び出しでは、単一の 0 を含むビット文字列が返されます。その後、11 から 20 までの呼び出しで、2 つの 0 を含むビット文字列が返されます。ビット文字列がすべて 0 になるまで、これをずっと続けたいと思います。
どうすればそのような機能を設定できますか? ありがとう!
c++ - Boost dynamic_bitset - 整数値をビット範囲に入れる
構築時に最初のビットを 1 に設定する 7 バイト/56 ビットのビットセットがあります。
構築後、整数値 (2019 など) をビット 4 から 15 に配置したいと思います。ブースト内でビット単位の操作なしでこれを行う簡単な方法があるかどうか知りたいですか? 基本的に、ビットの範囲を、それらのビットに収まるほど小さいことがわかっている整数値に設定したいと考えています。アドバイスをありがとう。
c++ - 巨大なブースト dynamic_bitset ベクトルをファイルに書き込んで読み返す効率的な方法
ブースト dynamic_bitsetの巨大なベクトルがあります。dynamic_bitset ベクターをファイルに書き込み、後でそのファイルを dynamic_bitset ベクターに読み戻したいと考えています。dynamic_bitset のメモリは連続したメモリ ブロックとして割り当てられていますか (トラバースせずにベクトル全体を一度に書き込むことができるように) ?
ビットセット ベクトルのサイズは数百万のオーダーです。そのため、要素を反復処理する代わりに、それらをファイルに書き込む効率的な方法を探しています。
dynamic_bitset を文字列に変換し、その文字列をファイルに書き込みました。後でファイルから文字列を読み取り、それを dynamic_bitset に変換し直しました。
以下は、Visual Studio を使用して C++ で記述したコードです。
しかし、文字列として保存するこの方法でも、ファイルへの書き込みに時間がかかります。ファイルから文字列に読み戻そうとすると、「未処理のアクセス違反例外」が発生します。同じものを実装するより効率的な方法はありますか?
c++ - boost::dynamic_bitset を拡張していくつかの機能を追加する
boost::dynamic_bitset
AND 演算の後のビット数のカウントなど、必要な機能を使用してクラスを拡張しようとしています。また、set()
メソッドを確実に「オーバーライド」できるようにするため、プライベート メンバー (m_num_bits など) へのアクセスも必要です。 resize() fctpos
を使用したビットセットの容量。設定するビットの が現在のビットセットの容量よりも大きい場合。ネイティブset()
fct を使用すると、その場合はアサーション エラーが発生します (この場合、set()
メソッドのサイズが変更されないため) 。
私はテンプレートの経験があまりありません。また、数週間前から C++ に戻ったばかりです。少し錆びています。誰かが私を助けてくれるかもしれません。
私はこれを始めました:
もちろん、これはコンパイルされていません。エラーは次のとおりです。
誰かがそれを実行する方法のヒントを与えることができますか? また、dynamic_bitset クラスから派生するよりも良い方法がありますか、それともこれで問題ありませんか?
どんな助けでも大歓迎です。
c++ - Boost の順序付けされていないコンテナの `std::bitset` または `boost::dynamic_bitset<>` の効率的なハッシュ
std::bitset
ハッシュする、またはboost::dynamic_bitset<>
Boost の順序付けられていないコンテナーの効率的な方法があるかどうか疑問に思っていますか?
std::bitset
現在、ハッシュする前にorboost::dynamic_bitset<>
を最初に変換std::string
していますが、これは遅くなるようです。
何か良い方法はありますか?
c++ - C++dynamic_bitsetをファイルに格納する
ベクトル<bool>またはビットセットをファイルに保存するにはどうすればよいですか?
基本的に、私は次のコードでバイナリファイルとしてビットセットを書いています:
動的ビットセットとto_block_rangeを一時的なベクトルに変換し、ブロックをファイルに出力する方法を使用しました。動作しますが、中間ベクトルを使用するとメモリ使用量が2倍になります(使用されるベクトルはビットセットと同じサイズです)。メモリ使用量を2倍にすることなく、ビットセットをファイルに出力するにはどうすればよいですか?
ブロック単位でビットセットを反復処理できればいいのですが、他の問題を防ぐために、動的ビットセットの作成者はこの種の機能を意図的に省略したようです。別のデータ構造を使用する必要がありますか?コンテキストに役立つ場合は、ブルームフィルターコードでビットセットを使用しています。
boost - boost::dynamic_bitset で最上位ビットを見つける効率的な方法は?
に設定されている最上位ビットのインデックスを見つける効率的な方法はありdynamic_bitset
ますか?
find_first
または、(最初の最下位ビットを見つける) を使用してすべてのビットを反復処理しfind_next
、最後に見つかったビットを返す必要がありますか?
おもちゃの例: 私のビットは (最上位から最下位まで)1010
で、数値を表し10
ます。必要な関数は index を返します3
。
c++ - 「そのようなファイルはありません」Boost dynamic_bitset の問題を含める
プロジェクトにBoostのDynamic_bitsetクラスを使用しようとしています.完全なライブラリから必要なファイルのサブセットを取得したと思います. 今、私はやっています
#include "boost/dynamic_bitset.hpp"
manager.cpp ファイル内で、コンパイルすると次のようになります。
プロジェクト フォルダー内のファイル階層は次のようになります。
この同じプロジェクトは、私の大学の Linux システム (g++ 4.2.4 では問題ありませんが、問題があるとは思えません) で正常にコンパイルされますが、私の Ubuntu ラップトップでは (上記のエラーで) 失敗します。明らかに存在するのに、なぜファイルが見つからないのですか?
私のインクルードはすべて次のとおりです。
コンパイルは簡単に行われます
g++ -o manager manager.c
また
g++ -Iboost -o manager manager.c
(local..) フォルダーを明示的に含めたい場合
boost - 一連のboost::dynamic_bitsetsを使用する方法は?
set
のdynamic_bitset
オブジェクトを使用しようとしていますが、実行時にアサーションエラーが発生します。
コードは次のとおりです。
dynamic_bitset
挿入されたオブジェクトに同じサイズが必要なのはなぜだろうか。が機能するためoperator<
には、短いビットセットの最上位ビットが暗黙的にゼロで埋められていると想定できませんでしたか?
そのセットを機能させる方法はありますdynamic_bitset
か?
unordered_set
を必要としないので試してみましたoperator<
が、がないのでコンパイルできませdynamic_bitset
ん。また、短いビットセットでのみ機能するメンバー関数hash_value
を使用せずにそれを記述する方法がわかりません。to_ulong