给定任何字符,我最快的方法是确定该字符是否属于已知字符的集合(不是容器类型).
换句话说,实现条件的最快捷方式是什么:
char c = 'a';
if(c == ch1 || c == ch2 || c == ch3 ...) // Do something...
是否有一个STL容器(我认为它可能是unordered_set?)我可以将该字符作为键传递给它,如果该键存在,它将返回true?
任何具有O(1)查找时间的东西都适合我.
鉴于:
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)