标签: c++
map<int, int> mp;
我可以理解以下代码:
mp[1] = 1; mp[2] = 2;
但这有什么意义呢?
mp[3]++;
没有设置mp[3] = n;(n可以是整数)。
mp[3] = n;
答案 0 :(得分:7)
当map的{{1}}引用一个尚不存在的元素时,它会按值初始化该条目添加元素。对于operator[],值初始化意味着初始化为零。因此int,如果密钥mp[3]++尚不存在,则最终将关联值设置为1.
map
operator[]
int
mp[3]++
答案 1 :(得分:0)
请参阅由SGI: MAP
mp [3] ++将自动调用mp [3],如果你看到文件,你可以看到mp [X]等于(*((m.insert(value_type(k,data_type() )))。第一秒。这意味着data_type()正在调用int()。
简而言之,int()将被称为初始值。和int()是0;请参考以下代码。
#include <iostream> using namespace std; int main(int,char**) { cout << int() << endl; return 0; }
PS。我找到了正确的答案并重新发布。感谢HisBlog