問題タブ [boost-bimap]

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 に答える
963 参照

c++ - 2 つの一意の要素セット間の複数の関係を格納する C++ データ構造

私は、2 つのユニークな要素セットを持つプロジェクトに取り組んでいます。1 つのセット内の要素のいずれかが、他のセット内の要素のいずれかと関連している可能性があります。

例:

セット 1: {A、B、C}

セット 2: {1、2、3、4}

許可される関係:

(ア、1) (ア、3)

(ロ、1) (ロ、4)

(C, 1) (C, 3) (C, 4)

1 つの関係は、1 対の括弧内の 2 つのセット要素として表されます。

私の特定のプロジェクトでは、両方のセットの要素がオブジェクトであり、格納されているすべてのオブジェクトへのすべての参照が 1 つのオブジェクトに解決されるようにします (たとえば、A を含むすべての関係はすべて同じオブジェクト A を参照し、同じことが関係の反対側にある他のセットへの参照)。

bimapこの問題を解決するためにブーストを使用することを考えていました。私は、bimap の左半分と右半分、および 2 つのセット間の関係に使用されるコレクションの潜在的なタイプを調べていて、どちらが正しいかを判断しようとしていました。

. _ bimap_ set_of CollectionType_bimap

ただし、実際にこれを試してみると、関係 (A, 1) を挿入した後に関係 (B, 1) を挿入できなくなります。これは、挿入が左の両方で有効でなければならないためです。そしてそれが起こるための正しい見方。この問題を修正するためにCollectionType、両方の半分の を に変更しましたmultiset_of。すべての値が適切に挿入されていますが、これbimapは、元のセットの要素のコピーが重複していることを意味しますか?

これを修正するために、bimap. リレーションシップ型のコレクション型はデフォルトで の左半分になっているので、それは間違いだとbimap思い、 と指定しました。ただし、これにより、元のセットからオブジェクトの複数のコピーが作成されるという元の問題が解決されるかどうかはわかりません。multiset_ofset_of

本当に必要なのは、セット 1 の要素に関連するセット 2 のすべてのオブジェクトを調べることだけです。ブーストbimapは私にとって正しいルートですか? 選択したコレクションと関係のタイプは正しいですか? 余談ですが、挿入時間を気にせずに、検索時間を短縮するようにマップをカスタマイズしようとしています (削除や変更は決して行われず、マップは初期化され、その後はルックアップにのみ使用されます)。代わりにカスタム データ構造を作成する必要がありますか?

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

c++ - 宣言 c++ で競合する指定子

私はデータ構造を使用しますbimap

メインファイルで正常に動作します。ただし、ヘッダーファイルで使用して、他の.cppファイルでアクセスできるようにすることに興味があります。

externmy.hようにしようとすると

「hash_bimap」の宣言で競合する指定子 extern typedef boost::bimap< std::string, int > hash_bimap;

0 投票する
0 に答える
122 参照

c++ - 多次元双方向マルチマップ型のものはありますか

Bidirectional Multimap私がのように使用した1次元データが得られるまで、すべてがうまくいっていました

私の必要性は、日付を多次元的に保存することです。キーと値を含む多くのフレーム12、があるとします。3

のようにすべてのフレームにアクセスできるように、bidirectional multimap多くの行 ( 12、 ) があるデータの構造を維持するにはどうすればよいですか。たとえば、任意のフレームを通過して、次のキーと値にアクセスできる必要があります。3bidirectional multimapbi-direction

注:bidirectional multimapフレームごとに 1 つずつ、3 つの個別の を維持することに興味はありませvector of vectorsmulti dimensional array

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

c++ - ブーストの OPERATOR_BRACKET_IS_NOT_SUPPORTED::bimap

でブラケット演算子を使用しようとしていますboost::bimapが、成功しません。

私が解決しようとしている問題にはbimap、次の要件を満たす が必要です。

  • ソート、一意int
  • 正しい、一意ではない、ソートされていないタイプ

これにより、次のように選択するようtypedefになりましたbimap

このタイプでブラケット演算子を使用したいのですが、うまくいきません。これは私が使用するコードです。

これにより、重要なビットが存在するように見える長いコンパイルエラーが発生します

(完全なライブ ライブ サンプルとコンパイラ出力は次の場所にあります: rextester )

以下の解決策を試しましたが、それでもエラーが発生します。

bimap要件を満たし、ブラケット演算子をサポートするを宣言するにはどうすればよいですか?