【发布时间】:2012-12-10 10:44:45
【问题描述】:
在以下代码中:
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[]不可以访问正确的视图吗?
【问题讨论】:
-
你希望它做什么?
-
@DavidSchwartz 我正在尝试像使用普通 std::map 一样使用 bimap。我所有的键和值都是独一无二的。我需要能够按值获取/设置键,反之亦然。 (我不确定使用
list_of) -
但是一张地图只有一个给定元素可以去的地方。老实说,我不明白你期望这会做什么。您能否准确描述
bm.right[2]应该做什么?例如,如果列表中没有2,是否应该添加一个?如果是这样,在哪里? -
正确,因为集合中的条目是不可变的。您需要选择具有您真正想要的语义的集合。
-
@DavidSchwartz 你能告诉我符合我要求的收藏吗?