1、在map中,由key查找value時,首先要判斷map中是否包含key。
2、如果不檢查,直接返回map[key],可能會出現意想不到的行為。如果map包含key,沒有問題,如果map不包含key,使用下標有一個危險的副作用,會在map中插入一個key的元素,value取默認值,返回value。也就是說,map[key]不可能返回null。
3、map提供了兩種方式,查看是否包含key,m.count(key),m.find(key)。
4、m.count(key):由於map不包含重復的key,因此m.count(key)取值為0,或者1,表示是否包含。
5、m.find(key):返回迭代器,判斷是否存在。
6、對於下面的場景,存在key就使用,否則返回null,有下面兩種寫法:
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;
這里需要注意:前一種方法很直觀,但是效率差很多。因為前面的方法,需要執行兩次查找。因此,推薦使用后一種方法。
7、對於STL中的容器,有泛型算法find(begin,end,target)查找目標,map還提供了一個成員方法find(key)