假设:
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
}
答案 0 :(得分:10)
my_map["some_key"] += some_float;
这将初始化float (即设置为0.0f)(如果它尚不存在)。然后它会向其添加some_float
(无论它是否存在)。