C++ map_instance[key]与map_instance.find(key)在c++;
我有一张地图定义为C++ map_instance[key]与map_instance.find(key)在c++;,c++,c++11,C++,C++11,我有一张地图定义为 static map<unsigned int, deque<FOO_STRUCT*> > CV_MAP; map\u实例[key]将默认为键key构造一个新值(如果它不存在) 与中一样,如果键不存在,它将调用deque的构造函数,并返回新构造的deque 使用find成员函数不会为给定的键构造新值——当该键不存在时,它只会返回一个指向CV_MAP.end()的迭代器 使用适合您的用例的内容。map\u实例[key]-返回参考(如果需要,在构建新元
static map<unsigned int, deque<FOO_STRUCT*> > CV_MAP;
map\u实例[key]
将默认为键key
构造一个新值(如果它不存在)
与中一样,如果键不存在,它将调用deque
的构造函数,并返回新构造的deque
使用find
成员函数不会为给定的键构造新值——当该键不存在时,它只会返回一个指向CV_MAP.end()的迭代器
使用适合您的用例的内容。map\u实例[key]
-返回参考(如果需要,在构建新元素之前)
map\u instance.find(key)
-return迭代器map\u instance[key]
最好是将默认初始化的key放入map中(如果不存在的话),或者对它做些什么(如果存在的话)
考虑这样一种情况,您希望在数组中存储每个元素的计数
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]++;
}
}
两者并不等同。问你需要什么,我想问一下,但是你在问之前看过这些方法的描述吗?也许你需要?是的,我一定误解了文档,对不起,我对C++非常陌生。
for(auto x : array){
if ( map_instance.find(key) == map_instance.end() ) {
map_instance[x] = 0;
}
else{
map_instance[x]++;
}
}