在以下代码中:
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[]
访问正确的视图?
答案 0 :(得分:2)
list_of
没有operator[]
。
答案 1 :(得分:1)
这段代码没有任何意义。 Lists没有operator[]
因为您必须选择在创建元素时插入元素的位置。由于列表没有内部排序(如地图所示),2
可以放在列表的开头,列表的末尾,列表的中间或其他任何位置。
(Boost的list_of
模仿标准list
的语义。)