map<int, int> mp;
我能理解下面的代碼:C++地圖做加不加初始化
mp[1] = 1;
mp[2] = 2;
但如何做到這一點有意義嗎?
mp[3]++;
沒有設置mp[3] = n;
(n可能是一個整數)。
map<int, int> mp;
我能理解下面的代碼:C++地圖做加不加初始化
mp[1] = 1;
mp[2] = 2;
但如何做到這一點有意義嗎?
mp[3]++;
沒有設置mp[3] = n;
(n可能是一個整數)。
當map
的operator[]
引用一個還不存在的元素時,它通過值 - 初始化該條目來添加該元素。對於int
,值初始化意味着初始化爲零。所以mp[3]++
,如果該鍵3
不存在,結束了相關的值設置爲1
http://en.cppreference.com/w/cpp/container/map/operator_at - >「如果鍵不存在,則插入value_type(key,T())」 – Anonymous
請參閱通過SGI: MAP
的MP管理的文檔[3] ++會自動調用MP [3 ],如果你看到文檔,你可以看到mp [X]等於(*((m.insert(value_type(k,data_type()))。)first。)。second。這意味着data_type()正在調用int()。
簡而言之,int()將被稱爲初始值。和int()是0;請參考下面的代碼。
#include <iostream>
using namespace std;
int
main(int,char**)
{
cout << int() << endl;
return 0;
}
PS。我找到了正確的答案並轉發了它。感謝HisBlog
看看[這個答案](http://stackoverflow.com/a/12889600/391161)。 – merlin2011
可能的[STL映射是否自動初始化值的重複?](http://stackoverflow.com/questions/12889496/does-stl-map-auto-initialize-values) – merlin2011
您還可以在下面查看我的解決方案解釋全球範圍的例子。 –