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
您还可以在下面查看我的解决方案解释全球范围的例子。 –