如何在三元组运算符的帮助下通过最大值来实现地图

时间:2017-04-13 16:54:15

标签: c++ dictionary

我有一张地图,我希望通过最大值来实现。 我想要的是: 1.如果key不存在或value > mymap[key]mymap[key] = value 2.否则,我不想重写mymap[key]

我有强烈的印象,下面写的所有内容都可以在三元组操作符

的帮助下完成
    if (mymap.find(key) != mymap.end()) 
    {
        mymap[key] = value;
    }
    else
    {
        if (value > mymap[key]) mymap[key] = value;
    }

我喜欢

mymap[key] = value > mymap[key] ? value : mymap[key];

但如果key不存在,则会产生mymap[key] = 0,问题是value可能是否定的。

有什么想法吗?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如评论中所述,您可以多次在地图上搜索密钥。通常最好保存查找结果,以便以后使用它进行操作,这样你就不会每次都在研究密钥的映射。

这个怎么样?

const auto it = mymap.find(key);
if (it != mymap.end())
{
    it->second = std::max(value, it->second);
}
else
{
    mymap.emplace(key, value);
}