对于C++ unordered_map,如果它是新的,我如何添加键值对,如果它的键已经存在,则将一个函数应用于该值?

Ale*_*den 3 c++ stl unordered-map c++11

鉴于:

unordered_map<string, float> my_map
Run Code Online (Sandbox Code Playgroud)

还有一对:

auto my_pair = make_pair("some_key", some_float);
Run Code Online (Sandbox Code Playgroud)

如果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
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*ley 10

my_map["some_key"] += some_float;
Run Code Online (Sandbox Code Playgroud)

如果它尚不存在,则将初始化浮点值(即将其设置为0.0f).然后它会添加some_float(无论是否存在).