为什么 map<bool,int> m={{1,2},{3,4},{5,0}};尺寸 1 而不是 3?

Why is map<bool,int> m={{1,2},{3,4},{5,0}}; size 1 and not 3?

很奇特:

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

std::map 是唯一键。当转换为 bool.

时,135 都会产生 true

只是一个猜测,但您的第一个地图将 bool 作为键类型,并且所有值 1, 3 and 5 的计算结果为真。

您只能重写同一个条目。

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