其實在之前一篇關於map的基本操作中已經提到過注意[]操作,這裡再強調一下。
先看下面的程式:
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<int,int>nums;
nums[]++;
nums[]+=;
if(==nums[])
{
cout<<"key為4對應的value為0"<<endl;
}
map<int,int>::iterator it;
for(it=nums.begin();it!=nums.end();it++)
{
cout<<it->first<<" "<<it->second<<endl;
}
return ;
}
輸出結果
如果沒有注意過map的[]操作的話,一定會感覺結果很怪異,明明沒有對nums插值,怎麼就有了這些值,解釋如下:
在map中任何時候使用[],如果找到key值,則按照對應的key值找到value並進行操作,如果找不到key,自動插入一個key,並且會返回一個預設的value(例如,預設的value如果是int,則會返回0,如果是string則返回“”)。
測試結果也驗證了map中會按照key值自動排序。