当使用std::map<KeyType,ValueType,Comparator>
的自定义运算符时,其设计仅比较了我的一些KeyType字段,两个对象KeyType k1, k2
可能包含不同的数据,但对于地图而言,它们看起来很可能喜欢同样的钥匙。毕竟,这就是我们首先编写自定义Comparator的原因。
所以,如果我写
map[k1] = 1;
map[k2] = 2;
使用k1和k2使比较器报告它们相等,地图将包含键/值对{k1, 2}
。
用{k1, 1}
替换{k2, 2}
对的最优雅方法是什么,或者是先擦除k1然后插入k2的唯一方法?