問題タブ [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.

0 投票する
2 に答える
1036 参照

c++ - Boost.MultiIndexデータ構造内のワイルドカード検索?

データベースへの往復を減らして、アプリケーションを最適化しようとしています。その取り組みの一環として、いくつかのテーブルをメモリに移動し、Boost.MultiIndexコンテナーとして格納しました。

このプロセスの副作用として、文字列に対してワイルドカード マッチングを実行できなくなりました。たとえば、テーブルが MySQL に保存されている場合、次のようにできます。

しかし、現在は myString のキーを持つ Boost.MultiIndex コンテナを使用しているため、その能力を失ったようです。

明らかに、equal_range() 関数を使用して、特定の文字列に正確に一致するすべてのエントリを見つけることができます。

しかし、ワイルドカード マッチを行う唯一の方法は、構造全体を調べて、boost::regex_match() を使用して各キーを boost::regex と比較することです。

より良い方法はありますか?

0 投票する
3 に答える
3902 参照

c++ - ブースト multi_index の実装方法

Boost.MultiIndex の実装方法を理解するのに苦労しています。私が次のものを持っているとしましょう:

Employee[]実際にオブジェクトを格納する1 つの配列employeeと 2 つのマップがあるとします。

名前と年齢をキーに。各マップにはemployee*、配列に格納されたオブジェクトを指す値があります。これでよろしいですか?

0 投票する
2 に答える
2536 参照

c++ - Boost マルチインデックス イテレータから数値インデックスを取得する

私は次の束を保存しています

次のように定義された Boost.MultiIndex コンテナ内

これで、 からのイテレータと からのイテレータの 2 つができましindex<by_title>index<by_id>。にデータ メンバーを追加せずに、これらをコンテナーのランダム アクセス部分にインデックスに変換する最も簡単な方法は何struct Articleですか?

0 投票する
2 に答える
1528 参照

c++ - multi_indexのブースト:一意でないキーの一意の値を取得します

私はboost::multi_index_containerその要素が次のような構造体であるを持っています:

(データベースの意味での)メインキーはcomposite_keyのとaですb。さまざまなタイプのクエリを実行するための他のキーが存在します。

ここで、のすべての異なる値のセットを取得する必要がありますc。これらの値は決して一意ではありませんが、すべてのエントリを反復処理する(順序付けられている場合でも)、またはの異なる値の数がエントリの総数(たとえば、10)よりも<<であると予想されることを考えると、使用するstd::uniqueのはかなり無駄に思えますc1000まで)。

この結果をより効率的に取得する簡単な方法がありませんか?

0 投票する
1 に答える
457 参照

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」を使用しています。

0 投票する
1 に答える
2504 参照

c++ - マルチインデックスコンテナをブーストするためのテンプレートパラメータ

マルチインデックスコンテナをストレージとして含むジェネリッククラスを作成する必要があります。コンパイルすると、n番目のインデックスビューを定義した場所で次のようなエラーが発生します。

エラー:テンプレートとして使用される非テンプレート'nth_index'

プライベート: conn_table_t conn_table_; };

p>

0 投票する
1 に答える
539 参照

c++ - ブーストmulti_index抽出されたキーはキャッシュされますか?

サイズに基づいてインデックスを作成したいデータ型でboost::multi_indexを使用しています。ただし、このデータ型のsize()メンバー関数は、実行にコストがかかります。multi_indexは、キーエクストラクターから取得した値をキャッシュしますか?

たとえば、メンバーファンクションキー(element.size())を使用して順序付けされたインデックスを使用してmulti_indexコンテナーを作成し、そのサイズがコンテナーの中央に配置された要素を挿入した場合、コンテナーはサイズを再呼び出しします()正しい挿入ポイントを見つける前に、内部データ構造をトラバースしているときにアクセスするすべての要素のメンバー関数?

0 投票する
1 に答える
2223 参照

c++ - Boost Multi-Index コンテナの定数要素を回避する

イベントに応じて頻繁に更新されるため、コピーするのに費用がかかりますが、変更可能でなければならないデータクラスがあります。また、このようなクラスを多数保持するためのマルチインデックス コンテナーも必要です。boost::multi_index を使用して設定しようとしています。例えば:

私の問題は、 multi_index がコンテナー内の要素を定数として扱うことです (すべてのインデックスの整合性を維持するため)。たとえば、次はコンパイルされません。

replace()ペイロード クラスをコピーするにはコストがかかるため、このメソッドを使用できません。私はmodify()メソッドを知っていますが、実際のプログラムでは「ペイロード」クラスに多数のフィールドが含まれている可能性があり、それぞれのファンクターを書くのは問題外であるため、それを使用するのは面倒です。

助言がありますか?

編集:いくつか遊んだ後、データ要素をshared_ptrに置き換えてみましたMutableAndExpensiveToCopy:

main()これは機能し、データ変更コードを含めてコンパイルできました。

これは私が欲しかったものをほとんど与えてくれますが、なぜこれがうまくいくのか分かりません:

  1. このコードは意図したとおりに機能しますか、それとも見逃している警告がありますか?
  2. なぜこれが機能するのですか?shared_ptr の constness はその->演算子に適用されませんか?
0 投票する
1 に答える
346 参照

c++ - multi_index が理解できない

最初のインデックスmulti_indexが正しい場合: コンテナー内のオブジェクトの並べ替えがZIndex値を参照している場合、別のものについてはわかりません。私はそのような機能が必要です:ZIndexで注文しますがgetCppObject、反復すると戻ります。順序付けだけでなく、アクセス時の結果を設定することはできますか?

また、たとえば、 ではなくtag_pyall を繰り返し処理したいと考えています。これは本当に可能ですか?getPythonObjectObjectStoragemulti_index

0 投票する
3 に答える
168 参照

visual-studio-2008 - VC++のtypedefとブースト

私はブーストマルチインデックスについて学び、このチュートリアルに従っています。

問題は、Visual Studio 2008を使用してハッシュインデックスセクション(そのページのコードの最初のブロック)からコードをコンパイルできないことです:(

私が試すたびに、C++コンパイラは次のように文句を言います。

これらのエラーは、上記のコードブロックの19行目のtypedefで発生します。誰かが私がこれに光を当てるのを手伝ってもらえますか?