1. 程式人生 > >map需要注意的一些問題

map需要注意的一些問題

map容器常見的幾種賦值方式

map<int,string> mp;
mp.insert(make_pair(0,"aaaaa"));
mp.insert(pair<int, string>(3, "hi"));
mp[45] = "world";

這幾種方式有些細微但是很重要的區別,map是鍵值對的鍵必須是唯一的,當插入時,該鍵已經存在,使用insert則會插入失敗,而使用[key] = value;的方法則會覆蓋原來的鍵值對。那我們如何知道呼叫的insert是否成功呢?其實insert的返回值pair 已經告訴了我們如:

map<int,string>
mp; //auto自動型別推導,C++,auto在此等價於pair<map<int,string>::iterator,bool> auto result = mp.insert(make_pair(0,"hello")); if(false == result.second) { cout << "插入失敗" << endl; } else { cout << "插入成功" << endl; }

map容器的訪問

一般關聯容器沒有提供直接訪問的方式,所以訪問容器中的元素,必須借用迭代器。如:

map
<int,string>
mp; mp[1] = "hi"; mp[2] = "hello"; mp[52] = "fhgg"; for(map<int,string>::iterator iter = mp.begin();iter != mp.begin();++iter) { cout << "iter->first = " <<iter->first << "iter->second = "<<iter->second << endl; }

map容器的查詢

map容器的查詢是通過find函式,通過對應的key去獲取對應value。並且需要判斷find的 結果是否成功

map<int,string> mp;
mp[1] = "hi";
mp[2] = "hello";
mp[52] = "fhgg";
map<int,string>::iterator iter = mp.find(52);
if(iter != mp.end())
{
    cout << "key = 52, value = " << iter->second << endl;
}
else
{
    cout << "查詢失敗" << endl;
}