小编Ale*_*den的帖子

确定字符是否属于一组已知字符的最快方法C++

给定任何字符,我最快的方法是确定该字符是否属于已知字符的集合(不是容器类型).

换句话说,实现条件的最快捷方式是什么:
char c = 'a';
if(c == ch1 || c == ch2 || c == ch3 ...) // Do something...

是否有一个STL容器(我认为它可能是unordered_set?)我可以将该字符作为键传递给它,如果该键存在,它将返回true?

任何具有O(1)查找时间的东西都适合我.

c++ containers stl unordered-set c++11

5
推荐指数
2
解决办法
1638
查看次数

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

鉴于:

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)

c++ stl unordered-map c++11

3
推荐指数
1
解决办法
1959
查看次数

标签 统计

c++ ×2

c++11 ×2

stl ×2

containers ×1

unordered-map ×1

unordered-set ×1