5

很奇特:

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

4

3 回答 3

18

std::map是唯一键。1, 3,5转换truebool.

于 2015-02-19T00:55:23.907 回答
7

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

您只能重写相同的条目。

于 2015-02-19T00:55:35.983 回答
6

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

于 2015-02-19T00:55:47.553 回答