問題タブ [boost-multi-index]
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.
algorithm - multiple unique key in a multi index
I am trying to store objects in a boost multi-index
container.
These objects are all unique can be retrieved by 2 separate keys (unique as well).
When I try to find any element of that index by integer I use the following code
but it doesn't compile and I get the following error
When I use the same code with string it works fine; do you know what I am doing wrong?
c++ - boost::multi_index_container: 任意のインデックスから equal_range を取得し、ループを 1 回だけ実装する
multi_index_container
基本的に次のようなものがあります。
このようなコンテナーをインスタンス化し、そのインデックスを次のように使用します。
equal_range
ここで、実行時に、2 つのインデックスのいずれかを実行したいと考えています。実際に使用されるインデックスは、現在の構成によって異なります。私が達成しようとしているのは、次のようなものです。
これを行う方法がわかりません。結局のところ、 の戻り値の型index1.equal_range
は、 によって返されるものとは異なる反復子のペアですindex2.equal_range
。2つに共通のベースタイプはありますか? 私の例を見ると、どのSomeType
ように見える必要がありますか? for
使用される可能性のあるすべてのインデックスに対して、コード内でループを繰り返したくありません。
c++ - 複数のインデックスを持つ std::map を boost::multi_index_container に変換するにはどうすればよいですか
Coliruで. _ ライブ サンプルには 2 つのセクションがあります。これは、少なくとも、coliru で動作する Boost ライブ サンプルを取得できることを示すboost::multi_index_container
単純なわずかに変更された例です。また、非常に単純化されたインデックスのペアも指定されています。boost::multi_index_container
第二に、を使用するように適応しようとしているクラスがありmulti_index_container
ます。本質的にそのIndexContainer
コアには、クラスの次の typedef ごとに のstd::map
が含まれていますstd::map
このIndexContainer
クラスには、マップ コンテナーの基になるマップを変更するメソッドがupdateFileInfo
あります。興味深い構造には 4 つの個別のインデックスが含まれており、前述で指定された 4 つのインデックスのいずれかを使用して s を個別に反復できるようにしたいと考えていますが、に示されている例のような単純なベースの従業員を変更する方法がよくわかりませんs とタプルの組み合わせに基づいて何かを開始します。getFileInfo
FileInfo
IndexQuartet
LoadableFile
IndexQuartet
std::set
std::map
これを行う方法についてのヘルプやガイダンスをいただければ幸いです。
c++ - std::unique_ptr 要素の boost::multi_index::multi_index_container でイニシャライザ リストを使用する
初期化子リストを使用して、任意の型の要素をboost::multi_index::multi_index_container
含むオブジェクトに値を割り当てようとすると、コンパイル エラーが発生します。std::unique_ptr
以下に簡単な例を示します ( Wandboxにもあります)。
上に示したように、各オブジェクトを一度に 1 つずつ挿入するとinsert()
機能しますが、実際にはそうする必要はありません。
Boost 1.56.0 を使用し、Visual C++ 12.0 (Visual Studio 2013 Update 3) でコンパイルしています。ただし、Clang 3.4 または GCC 4.9.0 でコンパイルすると、本質的に同じエラーが発生します。
Clang からの出力は次のとおりです (読みやすいように選択されています)。
ここで何が起こっているのかよくわかりません。コピー コンストラクターが呼び出されるのはなぜですか? これは単なる Boost の制限ですか? 具体的には、私のターゲット コンパイラである Visual C++ 12.0 で動作する回避策はありますか?
boost-multi-index - Boost multi_index でサブレベル構造インデックスを使用する
Boost multi_index を使用して問題を解決しようとしています。次のように2つの構造がある場合:
MyStruct2::bx を使用してインデックスを定義するにはどうすればよいですか? これは可能ですか?
次のようなことを試みていました:
しかし、それはうまくいきません。
情報/アドバイスをありがとう。
c++ - std::unordered_map (マップのマップ) に基づくマルチインデックス コンテナーとマルチレベル マッピング コンテナーのブースト
私は最近、boost::multi_index_container を見つけました。マルチレベル マッピングに基づいて次のように定義された同様のコンテナーの私自身の実装と比較して、彼のパフォーマンスに興味があります。
キーの順序は重要ではありません。高速ルックアップは重要であり、このために私は次のようなものを使用しています:
どうなるか知りたい
- the most closest configuration of boost::multi_index_container to match my implementation
- the fastest way to search by primary key and secondary key.
I have tried to configure the template but I'm not sure if this is the best solution:
c++11 - boost::multi_index_container 消去関数はリハッシュしますか?
次の問題があります:boost::multi_index_container を定義しました。ここでは、整数型であるメンバ関数ポインタによって a をハッシュする単純化された定義ですTYPE
。&TYPE::m_id
m_id
次の方法でオブジェクトを削除すると:
erase
このコードは、消去がマップを再ハッシュしようとするとクラッシュするようです。ポインターが既に削除されているため、関数がポインターを削除する前に再ハッシュする可能性が
あることを誰かが知っていますか? (もちろん、修正は次のとおりです。とにかくより適切なdelete
下に移動します!)erase
セグメンテーション違反の後、次の最後のトレースを取得しました。
最後のスタック トレース出力: