分配:交换实现与STL的地图[]运算符(const的问题)我目前使用[]操作STL的地图上
map[key] = value;
没有什么太疯狂了。但是,我的值包含一个const公共成员:
class Value
{
public:
Value(int input) : member(input) { }
const int member;
};
没有深入我的应用程序的细节,const成员是我们想要保留的东西。鉴于此,我假设“地图[关键] =价值”在做类似的东西首先删除现有的值,然后插入新的一个:
map.erase(map.find(key));
map.insert(make_pair(key, value));
然而,究竟是什么似乎是发生的是,[ ]运算符返回对Value的引用,从而尝试使用=赋值或移动运算符等。显然,这是行不通的,因为该成员不能被重新分配。现在,我只需调用擦除然后插入自己,但我想知道是否有一种方法可以取消使用此“交换”技术的map [key] =值。
我不明白为什么这止跌没有工作。地图如何定义? – 2012-08-03 03:34:50
为什么不会映射[]返回一个引用?这对我来说似乎更直观。 – Antimony 2012-08-03 03:37:08
我不认为它不应该返回一个引用,我很满意这个实现,我只是问是否有办法做我想问的。让我以更简单的方式提出这个问题:如果我制作一个std :: map类型的映射,那么[]将无法工作(由于返回引用)。 –
2012-08-03 03:39:15