我目前在 a 上使用 [] 运算符std::map
:
map[key] = value;
没有什么太疯狂了。但是,我的值包含一个 const 公共成员:
class Value
{
public:
Value(int input) : member(input) { }
const int member;
};
在不深入了解我的应用程序的细节的情况下,我们想要保留 const 成员。鉴于此,我假设这样map[key] = value
做是先删除现有值,然后插入新值:
map.erase(map.find(key));
map.insert(make_pair(key, value));
但是,实际上似乎正在发生的是operator []
返回对值的引用,因此尝试使用 = 赋值或移动运算符或其他东西。显然,这是行不通的,因为无法重新分配成员。现在,我可以只调用擦除然后插入自己,但我想知道是否有一种方法可以map[key] = value
使用这种“交换”技术。