最近、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>>
が