假设我有一个映射,其键是一对,并且其自定义比较器保证了该对的第一个元素的唯一性。
class comparator
{
public:
bool operator()(const std::pair<std::string, std::int>& left,
const std::pair<std::string, std::int>& right)
{
return left.first < right.first;
}
};
std::map<std::pair<std::string, std::int>, foo, comparator>;
如果可能的话,现在我希望这张地图比这更智能。
如果已经存在与该对的第一个元素具有相同字符串的键,而不是在插入时被拒绝,如果该对的整数(.second)“可能是”,我将覆盖“已经存在的元素”插入的元素”更大。
当然,我可以通过在地图中查找密钥、获取密钥详细信息并在必要时覆盖它来做到这一点。或者,我可以采用带有多图的插入后方法,在该方法上我将迭代以清理重复项,仅保留具有最大对整数的键。
问题是:我可以通过覆盖部分 stl 实现([] 运算符 - 插入方法)或改进我的自定义比较器然后简单地依赖 map 的插入方法来原生地做到这一点吗?
我不知道这是否被接受,但我们可以想象有一个非常量比较器,它能够在某些情况下更新已经存储的 (key, value) 对。