【问题标题】:How value of map is getting initialized as there is no assignment operator used?由于没有使用赋值运算符,如何初始化 map 的值?
【发布时间】:2020-01-17 23:56:24
【问题描述】:
#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];
}

输出:

11111

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

【问题讨论】:

标签: c++


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果你在the docs 中查看std::map::operator[]

    返回对映射到与 key 等效的键的值的引用,如果该键不存在则执行插入

    所以基本上m[i] 将执行插入,如果该键不存在,那么增量将发生在引用新插入的值。

    【讨论】:

      猜你喜欢
      • 2014-11-20
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 2021-03-01
      • 2016-11-02
      • 1970-01-01
      • 2015-03-05
      • 2019-03-19
      相关资源
      最近更新 更多