問題タブ [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 投票する
1 に答える
548 参照

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: エラー: ';' の前の宣言の型が無効です トークン

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

c++ - boost::bimap インターフェイスで boost::associative プロパティ マップを使用する

ブースト Bimap のブーストの連想プロパティ マップ インターフェイスを実装できません。

次のようなバイマップがあり、boost::associative プロパティ マップを定義しようとしています。バイマップに Put および Get ヘルパー関数を使用したい..コードは次のとおりです。

次のようにコンパイルエラーが発生します

プロパティ マップを通じて bimap がサポートされていることは承知しています。ドキュメントについては、こちらを参照してください。連想プロパティ マップをどのように使用するのか疑問に思っています。連想プロパティ マップに左または右のバイマップを定義できれば、それも問題ありません。提案してください。

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

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() ) を使用する必要はありません...

私の問題が十分に明確であることを願っています。提案してください。

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

c++ - boost::bimap で定義された boost::associative プロパティ マップを使用して値からキーを取得する

ここで別の質問をして申し訳ありませんが、boost::bimaps を使用する意図についてもっと明確にするべきでした。

私のキーと値のペアは、ここでは両方とも一意です。キー、値を使用してbimapを埋めたいです。値を使用してキーを取得します。

@seheが言及した私のコードとその解決策を参照してください。コードでやりたいことは次のとおりです。

これが私のコードです:

エラーは以下のとおりです。

左連想プロパティ マップを使用して Put し、右連想プロパティ マップを取得する方法はありますか? Put および Get 関数は汎用性のためのものです。インサートなどを使用できますが、避けたいです。@sehe、以前の回答に感謝します。この問題自体をもっと早く話すべきだった

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

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>>