問題タブ [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.
c++ - ネストされた値に基づくインデックスでマルチインデックスコンテナをブースト
私がこのようなオブジェクトを持っている場合:
次のように、マルチインデックスコンテナを作成できます。
しかし、私がこのようなクラスを持っている場合:
オブジェクト.bar().property()
のコンテナのインデックスを作成するにはどうすればよいですか?Foo
通常、への呼び出しをネストboost::bind
しますが、マルチインデックスコンテナのコンテキストでそれを機能させる方法を理解できません。
c++ - boost :: multi_index_containerwithrandom_accessおよびordered_unique
boost::multi_index_container
ランダムアクセスとorderd_uniqueを同時に使用する際に問題が発生します。(長い質問で申し訳ありませんが、例を使用する必要があると思います。)
次に例を示します。ファクトリでN個のオブジェクトを作成し、オブジェクトごとに満たす必要があるとします(この要求は、マルチインデックスの作成時にわかります)。さて、私のアルゴリズム内で、次のクラスに保存する中間結果を取得します。
オブジェクトが生成されるベクトルparts
descibes(その長さはNであり、辞書式順序で私のcorespデマンドベクトルよりも小さいです!)-そのようなベクトルごとに、used_timeも知っています。さらに、生成されたオブジェクトのこのベクトルの値を取得します。
すべてのオブジェクトを生成できないように、別の制約があります。アルゴリズムintermediate_result
では、データ構造に複数のオブジェクトを格納する必要があります。そして、ここboost::multi_index_container
で使用されます。これは、とのペアが一意parts
をused_time
記述しているためですintermediate_result
(そして、データ構造内で一意である必要があります)がmax_value
、アルゴリズムは常にintermediate_result
最高のを必要とするため、これは考慮しなければならない別のインデックスmax_value
です。
そこで、「parts&used_time-pair」と(異なるオブジェクトが同じ値を持つ可能性があります)にを使用してみましたboost::multi_index_container
。ordered_unique<>
ordered_non_unique<>
max_value
intermediate_result
問題は次のとおりです。どの「parts&used_time-pair」が小さいかを判断するために必要な述語は、std::lexicographical_compare
私のparts
-vectorで使用するため、多くのオブジェクトで非常に低速ですintermediate_result
。しかし、解決策があります。各オブジェクトに対する私の需要はそれほど高くないので、可能な各部分に格納できます。中間結果をそのによって一意にベクトル化しますused_time
。
たとえば、デマンドベクトルがある場合は、可能なパーツベクトル( 2 , 3 , 1)
を格納するデータ構造が必要です。(2+1)*(3+1)*(1+1)=24
そのようなエントリごとに、一意である必要がある異なるused_timesが必要です。(最小の時間を保存するだけでは不十分です。たとえば、追加の制約が次の場合:本番環境で特定の時間を正確に満たすため)
random_access<>
しかし、 -indexと-indexを組み合わせるにはどうすればよいordered_unique<>
ですか?
(Example11はこれについては役に立ちませんでした。)
c++ - hashed_unique_indexでマルチインデックスをブーストするとコンパイラエラーが発生します
このスレッドでは、intと。をhashed_unique<>
使用してインデックスを使用する方法を学びました。しかし、残念ながら、次のコードはかなりのエラーメッセージを生成します。composite_key
std::vector<int>
1> boost/multi_index/hashed_index.hpp(439) : error C2784: 'size_t .. composite_key_hash<...>::operator ()(const boost::tuples::tuple<...> &) const' :
テンプレート引数を推測できませんでしたfor 'const boost::tuples::tuple<...> &' from 'const unique_property'
ここにコードがあります、誰かが何が悪いのか知っていますか?:-?
完全なエラーメッセージは次のとおりです。
c++ - Boost Multi-Index で複数のインデックスを検索
boost::multi_index
以前の検索の結果で検索を制限するにはどうすればよいですか? 例として、次のような内部値を持つ長方形クラスがあるとします。
そして、「与えられた-その長方形に含まれ、最も高い値を持つinput_rectangle
オブジェクトはどれですか?」のようなクエリに答えるには、そのようなオブジェクトのデータ構造が必要です。MyRect
次のように「multi_index」を使用できます。
input_rectangle
幅がある場合、次のinput_width
ようなものを使用できます。
しかし、coresp の高さの検索を、与えられた 2 つの反復子で制限するにはどうすればよいでしょうか? (その後、その結果で最も高い値を持つオブジェクトを見つけますか?)
c++ - 挿入の順序を保持するC++ハッシュマップ
私は次のコードを持っています:
ただし、後で挿入されたのと同じ順序で要素を反復処理できるように、順序を保持するものを探しています。私のコンピューターでは、上記のコードは順序を保持せず、次のように出力します。
多分私は使用できると思いましたboost::multi_index_container
イテレータが挿入の順序に従うように、このコンテナ(または他の適切なコンテナ)を使用して元のコードを実装する方法を誰かに教えてもらえますか?
c++ - Boost.MultiIndex:効果的な集合交差を作成する方法は?
data1
とがあると仮定しdata2
ます。どうすればそれらを交差させることができstd::set_intersect()
ますか?
c++ - 定数式のテンプレート:VC++2008でエラーC2975
私はメタプログラミングの要素を使おうとしていますが、最初の試行で壁にぶつかりました。次のように使用できるコンパレータ構造が欲しいのですが。
どこ:
私が欠けているものは何ですか?
アーマンよろしくお願いします。
申し訳ありませんが、エラーメッセージ全体をコピーしませんでした。完全なエラー:
replace - multi_index composite_key をイテレータに置き換える
boost::multi_index でインデックスをループして置換を実行する方法はありますか?
boost - multi_indexordered_unique中央値をブースト
Ordered_uniqueインデックスを持つブーストmulti_indexコンテナから中央値をすばやく取得したいのですが、インデックスイテレータはランダムアクセスではありません(これはstd :: setと一致していますが、なぜできないのかわかりません) ...)。
イテレータcontainer.size()/ 2倍をインクリメントする以外に、これを行うためのより高速で適切な方法はありますか?