問題タブ [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.
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_of
set_of
本当に必要なのは、セット 1 の要素に関連するセット 2 のすべてのオブジェクトを調べることだけです。ブーストbimap
は私にとって正しいルートですか? 選択したコレクションと関係のタイプは正しいですか? 余談ですが、挿入時間を気にせずに、検索時間を短縮するようにマップをカスタマイズしようとしています (削除や変更は決して行われず、マップは初期化され、その後はルックアップにのみ使用されます)。代わりにカスタム データ構造を作成する必要がありますか?
c++ - 宣言 c++ で競合する指定子
私はデータ構造を使用しますbimap
メインファイルで正常に動作します。ただし、ヘッダーファイルで使用して、他の.cpp
ファイルでアクセスできるようにすることに興味があります。
extern
のmy.h
ようにしようとすると
「hash_bimap」の宣言で競合する指定子 extern typedef boost::bimap< std::string, int > hash_bimap;
c++ - 多次元双方向マルチマップ型のものはありますか
Bidirectional Multimap
私がのように使用した1次元データが得られるまで、すべてがうまくいっていました
私の必要性は、日付を多次元的に保存することです。キーと値を含む多くのフレーム1
、2
、があるとします。3
のようにすべてのフレームにアクセスできるように、bidirectional multimap
多くの行 ( 1
、2
、 ) があるデータの構造を維持するにはどうすればよいですか。たとえば、任意のフレームを通過して、次のキーと値にアクセスできる必要があります。3
bidirectional multimap
bi-direction
注:bidirectional multimap
フレームごとに 1 つずつ、3 つの個別の を維持することに興味はありませvector of vectors
んmulti dimensional array
。
c++ - ブーストの OPERATOR_BRACKET_IS_NOT_SUPPORTED::bimap
でブラケット演算子を使用しようとしていますboost::bimap
が、成功しません。
私が解決しようとしている問題にはbimap
、次の要件を満たす が必要です。
- 左 ソート、一意
int
- 正しい、一意ではない、ソートされていないタイプ
これにより、次のように選択するようtypedef
になりましたbimap
。
このタイプでブラケット演算子を使用したいのですが、うまくいきません。これは私が使用するコードです。
これにより、重要なビットが存在するように見える長いコンパイルエラーが発生します
(完全なライブ ライブ サンプルとコンパイラ出力は次の場所にあります: rextester )
以下の解決策を試しましたが、それでもエラーが発生します。
bimap
要件を満たし、ブラケット演算子をサポートするを宣言するにはどうすればよいですか?