我有一张地图,我希望通过最大值来实现。
我想要的是:
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
可能是否定的。
有什么想法吗?非常感谢您的帮助!
答案 0 :(得分:1)
如评论中所述,您可以多次在地图上搜索密钥。通常最好保存查找结果,以便以后使用它进行操作,这样你就不会每次都在研究密钥的映射。
这个怎么样?
const auto it = mymap.find(key);
if (it != mymap.end())
{
it->second = std::max(value, it->second);
}
else
{
mymap.emplace(key, value);
}