C++ map注意事项
1、在map中,由key查找value时,首先要判断map中是否包含key。
如果不检查,直接返回map[key],可能会出现不易发现的问题。如果map包含key,没有问题,如果map不包含key,就会在map中插入一个key的元素,value取默认值(0),返回value。也就是说,map[key]不可能返回null。
2、map提供了两种方式,查看是否包含key,m.count(key),m.find(key)。
m.count(key):由于map不包含重复的key,因此m.count(key)取值为0,或者1,0表示不包含,1表示包含。
m.find(key):返回迭代器,判断是否存在。
3、对于下面的场景,存在key就使用,否则返回null,有下面两种写法:
if(map.count(key)>0)
{
return map[key];
}
it = map.find(key);
if(it!=map.end())
{
return it->second;
}
这里需要注意:前一种方法很直观,但是效率差很多。因为前面的方法,需要执行两次查找。因此,推荐使用后一种方法。
4、对于STL中的容器,有泛型算法find(begin,end,target)查找目标,map还提供了一个成员方法find(key)