我目前在 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使用这种“交换”技术。