1. 程式人生 > >C++ map通過key獲取value

C++ map通過key獲取value

一般是value  =map[key],或者另一種迭代器的方式

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)