C ++ map do plus plus没有初始化

时间:2017-04-19 04:11:19

标签: c++

map<int, int> mp;

我可以理解以下代码:

mp[1] = 1;
mp[2] = 2;

但这有什么意义呢?

mp[3]++;

没有设置mp[3] = n;(n可以是整数)。

2 个答案:

答案 0 :(得分:7)

map的{​​{1}}引用一个尚不存在的元素时,它会按值初始化该条目添加元素。对于operator[],值初始化意味着初始化为零。因此int,如果密钥mp[3]++尚不存在,则最终将关联值设置为1.

答案 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