【发布时间】: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
很奇怪:
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
std::map 是唯一键。 1、3、5 全部转换为true 时产生bool。
【讨论】:
只是一个猜测,但您的第一张地图将 bool 作为键类型,并且所有值 1, 3 and 5 评估为 true。
你只能重写同一个条目。
【讨论】:
您的第一张地图以 bool 作为键。布尔值只有两个。您提供整数作为输入。非 0 整数为真,0 整数为假。因此,您的所有密钥都是真实的。其中两个被最后一个覆盖。这就是大小为 1 的原因。
【讨论】: