提升:使用operator []访问bimap

时间:2012-12-10 10:44:46

标签: c++ boost bimap

在以下代码中:

typedef bimap< set_of< std::string >, list_of< int > > bm_type;
bm_type bm;

bm.left["one"] = 1; // "one" -> 1
bm.left["one"] = 2; // replaced: "one" -> 2
bm.right[2] = "two"; // Compile error

如何摆脱编译错误?是否可以使用operator[]访问正确的视图?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

这段代码没有任何意义。 Lists没有operator[]因为您必须选择在创建元素时插入元素的位置。由于列表没有内部排序(如地图所示),2可以放在列表的开头,列表的末尾,列表的中间或其他任何位置。

(Boost的list_of模仿标准list的语义。)