一、在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)效率