【问题标题】:Why is map<bool,int> m={{1,2},{3,4},{5,0}}; size 1 and not 3?为什么 map<bool,int> m={{1,2},{3,4},{5,0}}; 1号而不是3号?
【发布时间】:2015-02-19 00:52:47
【问题描述】:

很奇怪:

map<bool,int> mb={{1,2},{3,4},{5,0}};
cout << mb.size(); 
map<int,int> mi={{1,2},{3,4},{5,0}};
cout << mi.size();

打印出来

13

【问题讨论】:

    标签: c++ c++11 stdmap uniform-initialization


    【解决方案1】:

    std::map 是唯一键。 135 全部转换为true 时产生bool

    【讨论】:

      【解决方案2】:

      只是一个猜测,但您的第一张地图将 bool 作为键类型,并且所有值 1, 3 and 5 评估为 true。

      你只能重写同一个条目。

      【讨论】:

        【解决方案3】:

        您的第一张地图以 bool 作为键。布尔值只有两个。您提供整数作为输入。非 0 整数为真,0 整数为假。因此,您的所有密钥都是真实的。其中两个被最后一个覆盖。这就是大小为 1 的原因。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-30
          • 2013-07-25
          • 1970-01-01
          • 2011-09-07
          • 1970-01-01
          • 2020-10-15
          • 1970-01-01
          相关资源
          最近更新 更多