一、在map中,由key查找value时,首先要判断map中是否包含key。算法
二、若是不检查,直接返回map[key],可能会出现意想不到的行为。若是map包含key,没有问题,若是map不包含key,使用下标有一个危险的反作用,会在map中插入一个key的元素,value取默认值,返回value。也就是说,map[key]不可能返回null。spa
三、map提供了两种方式,查看是否包含key,m.count(key),m.find(key)。code
四、m.count(key):因为map不包含重复的key,所以m.count(key)取值为0,或者1,表示是否包含。blog
五、m.find(key):返回迭代器,判断是否存在。get
六、对于下面的场景,存在key就使用,不然返回null,有下面两种写法:it
1 if(m.count(key)>0) 2 { 3 return m[key]; 4 } 5 return null;
1 iter = m.find(key); 2 if(iter!=m.end()) 3 { 4 return iter->second; 5 } 6 return null;
这里须要注意:前一种方法很直观,可是效率差不少。由于前面的方法,须要执行两次查找。所以,推荐使用后一种方法。class
七、对于STL中的容器,有泛型算法find(begin,end,target)查找目标,map还提供了一个成员方法find(key)效率