C++ 为什么地图<;布尔,国际>;m={1,2},{3,4},{5,0};1号而不是3号?

C++ 为什么地图<;布尔,国际>;m={1,2},{3,4},{5,0};1号而不是3号?,c++,c++11,stdmap,uniform-initialization,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(); map mb={{1,2},{3,4},{5,0}; coutstd::map是唯一的键1、3、5当转换为bool时,都会产生true,bool只是一个猜测,但是您的第一个映射将bool作为键类型,并且所有值1、

很奇怪:

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();
map mb={{1,2},{3,4},{5,0};

cout
std::map
是唯一的键
1
3
5
当转换为
bool
时,都会产生
true
bool

只是一个猜测,但是您的第一个映射将
bool
作为键类型,并且所有值
1、3和5
都计算为true


您只能重写同一个条目。

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