問題タブ [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.
c++ - Boost.MultiIndexデータ構造内のワイルドカード検索?
データベースへの往復を減らして、アプリケーションを最適化しようとしています。その取り組みの一環として、いくつかのテーブルをメモリに移動し、Boost.MultiIndexコンテナーとして格納しました。
このプロセスの副作用として、文字列に対してワイルドカード マッチングを実行できなくなりました。たとえば、テーブルが MySQL に保存されている場合、次のようにできます。
しかし、現在は myString のキーを持つ Boost.MultiIndex コンテナを使用しているため、その能力を失ったようです。
明らかに、equal_range() 関数を使用して、特定の文字列に正確に一致するすべてのエントリを見つけることができます。
しかし、ワイルドカード マッチを行う唯一の方法は、構造全体を調べて、boost::regex_match() を使用して各キーを boost::regex と比較することです。
より良い方法はありますか?
c++ - ブースト multi_index の実装方法
Boost.MultiIndex の実装方法を理解するのに苦労しています。私が次のものを持っているとしましょう:
Employee[]
実際にオブジェクトを格納する1 つの配列employee
と 2 つのマップがあるとします。
名前と年齢をキーに。各マップにはemployee*
、配列に格納されたオブジェクトを指す値があります。これでよろしいですか?
c++ - Boost マルチインデックス イテレータから数値インデックスを取得する
私は次の束を保存しています
次のように定義された Boost.MultiIndex コンテナ内
これで、 からのイテレータと からのイテレータの 2 つができましindex<by_title>
たindex<by_id>
。にデータ メンバーを追加せずに、これらをコンテナーのランダム アクセス部分にインデックスに変換する最も簡単な方法は何struct Article
ですか?
c++ - multi_indexのブースト:一意でないキーの一意の値を取得します
私はboost::multi_index_container
その要素が次のような構造体であるを持っています:
(データベースの意味での)メインキーはcomposite_key
のとa
ですb
。さまざまなタイプのクエリを実行するための他のキーが存在します。
ここで、のすべての異なる値のセットを取得する必要がありますc
。これらの値は決して一意ではありませんが、すべてのエントリを反復処理する(順序付けられている場合でも)、またはの異なる値の数がエントリの総数(たとえば、10)よりも<<であると予想されることを考えると、使用するstd::unique
のはかなり無駄に思えますc
1000まで)。
この結果をより効率的に取得する簡単な方法がありませんか?
c++ - インデックスtypedefの不完全な型によるboost::multi_index_containerコンパイルエラー
boost :: multi_index_container(次のように)を使用していますが、インデックスをtypedefしようとすると、コンパイルエラーが発生します:
エラーの詳細:
typename
使用のバリエーションを試しtemplate
ましたが、私はそれを正しく行っていないと思います(問題を正しく理解していないため、正しく解決することができます)。
どんな助けでも大歓迎です。
ありがとう。
PS:「g ++(GCC)4.2.4(Ubuntu 4.2.4-1ubuntu4)」と「boost-1.42」を使用しています。
c++ - マルチインデックスコンテナをブーストするためのテンプレートパラメータ
マルチインデックスコンテナをストレージとして含むジェネリッククラスを作成する必要があります。コンパイルすると、n番目のインデックスビューを定義した場所で次のようなエラーが発生します。
エラー:テンプレートとして使用される非テンプレート'nth_index'
プライベート: conn_table_t conn_table_; };
p>c++ - ブーストmulti_index抽出されたキーはキャッシュされますか?
サイズに基づいてインデックスを作成したいデータ型でboost::multi_indexを使用しています。ただし、このデータ型のsize()メンバー関数は、実行にコストがかかります。multi_indexは、キーエクストラクターから取得した値をキャッシュしますか?
たとえば、メンバーファンクションキー(element.size())を使用して順序付けされたインデックスを使用してmulti_indexコンテナーを作成し、そのサイズがコンテナーの中央に配置された要素を挿入した場合、コンテナーはサイズを再呼び出しします()正しい挿入ポイントを見つける前に、内部データ構造をトラバースしているときにアクセスするすべての要素のメンバー関数?
c++ - Boost Multi-Index コンテナの定数要素を回避する
イベントに応じて頻繁に更新されるため、コピーするのに費用がかかりますが、変更可能でなければならないデータクラスがあります。また、このようなクラスを多数保持するためのマルチインデックス コンテナーも必要です。boost::multi_index を使用して設定しようとしています。例えば:
私の問題は、 multi_index がコンテナー内の要素を定数として扱うことです (すべてのインデックスの整合性を維持するため)。たとえば、次はコンパイルされません。
replace()
ペイロード クラスをコピーするにはコストがかかるため、このメソッドを使用できません。私はmodify()
メソッドを知っていますが、実際のプログラムでは「ペイロード」クラスに多数のフィールドが含まれている可能性があり、それぞれのファンクターを書くのは問題外であるため、それを使用するのは面倒です。
助言がありますか?
編集:いくつか遊んだ後、データ要素をshared_ptrに置き換えてみましたMutableAndExpensiveToCopy
:
main()
これは機能し、データ変更コードを含めてコンパイルできました。
これは私が欲しかったものをほとんど与えてくれますが、なぜこれがうまくいくのか分かりません:
- このコードは意図したとおりに機能しますか、それとも見逃している警告がありますか?
- なぜこれが機能するのですか?shared_ptr の constness はその
->
演算子に適用されませんか?
c++ - multi_index が理解できない
最初のインデックスmulti_index
が正しい場合: コンテナー内のオブジェクトの並べ替えがZIndex
値を参照している場合、別のものについてはわかりません。私はそのような機能が必要です:ZIndexで注文しますがgetCppObject
、反復すると戻ります。順序付けだけでなく、アクセス時の結果を設定することはできますか?
また、たとえば、 ではなくtag_py
all を繰り返し処理したいと考えています。これは本当に可能ですか?getPythonObject
ObjectStorage
multi_index
visual-studio-2008 - VC++のtypedefとブースト
私はブーストマルチインデックスについて学び、このチュートリアルに従っています。
問題は、Visual Studio 2008を使用してハッシュインデックスセクション(そのページのコードの最初のブロック)からコードをコンパイルできないことです:(
私が試すたびに、C++コンパイラは次のように文句を言います。
これらのエラーは、上記のコードブロックの19行目のtypedefで発生します。誰かが私がこれに光を当てるのを手伝ってもらえますか?