由于没有使用赋值运算符,map 的值是如何初始化的?

Pra*_*ari 0 c++

#include <iostream>
#include <map>

using namespace std;
int main()
{
    map<int, int> m;
    for (int i = 0; i < 5; i++)
        m[i]++;

    for (int i = 0; i < 5; i++)
        cout<<m[i];
}
Run Code Online (Sandbox Code Playgroud)

输出:

11111

现在,如何初始化 m[i] 的值?它不应该转换为 m[i] 的值加 1 吗?

Nat*_*ica 5

它不应该转换为 m[i] 的值加 1 吗?

这是。当您执行map[key]ifkey不存在时,它会将其添加到映射中,并且值会初始化映射到键的值。对于int值初始化意味着零初始化。所以,m[i]0,并且将++它增加到1