我有一张定义为
的地图static map<unsigned int, deque<FOO_STRUCT*> > CV_MAP;
我想知道一种方法是否比另一种方法更好:
map_instance[key] vs. map_instance.find(key).
答案 0 :(得分:1)
map_instance[key]
不存在, key
将默认构建新值。
如果deque<FOO_STRUCT*>
不存在,它会调用key
的构造函数,并返回新构造的deque<FOO_STRUCT*>
。
使用find
成员函数不会为给定键构造新值 - 当键不存在时,它将返回指向CV_MAP.end()
的迭代器。
使用适合您用例的内容。
答案 1 :(得分:0)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<p style='position:relative;'>Move This</p>
<div style='height:100px;width:100px;border:1px solid black;margin-top:200px;'></div>
- 返回参考(之前,如果需要,请构建新元素)
map_instance[key]
- 返回迭代器
答案 2 :(得分:0)
map_instance[key]
可以是首选的,只要您关注的是将默认初始化的密钥放入地图中(如果不存在),或者如果存在则执行某些操作。
考虑一种情况,您希望在数组中存储每个元素的计数。
for(auto x : array){
map_instance[x]++; //no need to find here at first.
}
正如您所看到的,它确实简化了您的代码,并删除了if-else
子句。
for(auto x : array){
if ( map_instance.find(key) == map_instance.end() ) {
map_instance[x] = 0;
}
else{
map_instance[x]++;
}
}