【发布时间】:2015-05-18 11:55:26
【问题描述】:
给定:
unordered_map<string, float> my_map
还有一对:
auto my_pair = make_pair("some_key", some_float);
如果some_key 不存在,我如何有效地将这对插入到地图中,
如果some_key 确实存在,自动将some_float 添加到键的现有值中?
我目前的解决方案(或缺乏,肯定有更优雅的方式来做到这一点):
auto added = my_map.emplace(my_pair);
if(!added.second) { // my_key already has an associated value
auto &curr_value = *my_map.first; // pointer to the existing pair
curr_value.second += my_pair.second; // add some_float
}
【问题讨论】:
-
虽然本杰明的回答解决了您的问题,但如果值初始化不是您想要的,您的解决方案将尽可能简短/优雅。你可以将最后两行写成一行,
added.first->second += my_pair.second;,但并不是每个人都同意它提高了可读性。
标签: c++ c++11 stl unordered-map