map需要注意的一些問題
阿新 • • 發佈:2018-12-10
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;
}