問題タブ [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++ - Boost.Bimap での unordered_set_of の使用エラー
ドキュメントからこの例に従おうとしています (word_counter の typedef を参照してください)。
スローされるエラーは
test.cpp:11:1: エラー: テンプレート引数の数が間違っています (1、5 である必要があります) /usr/include/boost/bimap.hpp:13:0 からインクルードされたファイルで、test.cpp:3 から: /usr /include/boost/bimap/bimap.hpp:133:7: エラー: 'テンプレート クラス ブースト::bimaps::bimap' に提供されました test.cpp:11:10: エラー: ';' の前の宣言の型が無効です トークン
c++ - boost::bimap インターフェイスで boost::associative プロパティ マップを使用する
ブースト Bimap のブーストの連想プロパティ マップ インターフェイスを実装できません。
次のようなバイマップがあり、boost::associative プロパティ マップを定義しようとしています。バイマップに Put および Get ヘルパー関数を使用したい..コードは次のとおりです。
次のようにコンパイルエラーが発生します
プロパティ マップを通じて bimap がサポートされていることは承知しています。ドキュメントについては、こちらを参照してください。連想プロパティ マップをどのように使用するのか疑問に思っています。連想プロパティ マップに左または右のバイマップを定義できれば、それも問題ありません。提案してください。
c++ - BOOST::associative プロパティ マップを使用して boost::BIMAP に挿入します ... 失敗しました
boost::bimaps および boost associative property maps interface hereに関する以前の質問を参照して、bimap にPut および Get ヘルパー関数を使用したいと考えています。
hereのサンプルコードを参照して、次を追加しようとしましたが、アサーションが失敗したという長いコンパイルエラーが発生しました...コードは次のとおりです。
次のようなエラーが発生します:(長いリストですが、スニペットを入れただけです)
また、boost のファイル (property_map.hpp) の 364 行目にエラーが発生するエラーが 1 つあります。
左側のマップ ビューを参照しているため、連想マップがデータを変更できないというエラーを理解しています。しかし、 put および get ヘルパー関数を使用するにはどうすればよいですか?
GET (my_bimap.left, z) 関数を使用できますが、PUT 関数を使用できません。get 関数と put 関数に連想プロパティ マップを使用して実際の bimap を操作したかったので、insert( value_type() ) を使用する必要はありません...
私の問題が十分に明確であることを願っています。提案してください。
c++ - boost::bimap で定義された boost::associative プロパティ マップを使用して値からキーを取得する
ここで別の質問をして申し訳ありませんが、boost::bimaps を使用する意図についてもっと明確にするべきでした。
私のキーと値のペアは、ここでは両方とも一意です。キー、値を使用してbimapを埋めたいです。値を使用してキーを取得します。
@seheが言及した私のコードとその解決策を参照してください。コードでやりたいことは次のとおりです。
これが私のコードです:
エラーは以下のとおりです。
左連想プロパティ マップを使用して Put し、右連想プロパティ マップを取得する方法はありますか? Put および Get 関数は汎用性のためのものです。インサートなどを使用できますが、避けたいです。@sehe、以前の回答に感謝します。この問題自体をもっと早く話すべきだった
c++ - リストとして 2 番目のタイプを使用して Bimap をブーストし、右側のマップ ビューを平坦化します
最近、boost には bimap という名前の双方向マップ実装があることがわかりました。
私の最初の STL マップは、次の 2 つのタイプを使用していました。
int
キータイプとしてstd::weak_ptr<void>
値の型として (と呼びましょうX
)
シナリオ 1
これらのタイプで bimap を作成するには、宣言は次のようになります。
boost::bimap<int, boost::bimaps::set_of<X, std::owner_less<X>>>
std::weak_ptr
より少ない演算子( によって提供される)が必要であり、(私が正しく理解していれば)使用できるようstd::owner_less
に型にリンクされているためです。boost::bimaps::set_of
シナリオ 2
int
マップの type キーが type の複数の値を指すようにしますX
。
標準マップの場合、次のように値の型を からX
に変更してstd::list<X>
も問題ありません。
std::map<int, std::list<X>>
map<X,int>
右のマップ ビューが(のリストを平坦化X
)として解釈され、右のマップ ビューmap<int,list<X>>
が