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

NoS*_*tAl 5 c++ stdmap uniform-initialization c++11

相当特殊:

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();
Run Code Online (Sandbox Code Playgroud)

打印出来

13

T.C*_*.C. 18

std::map是独一无二的钥匙.1,3,5所有产率true当转换为bool.


Aes*_*ete 7

只是一个猜测,但你的第一个地图有bool关键类型,所有值都1, 3 and 5评估为真.

您只需要重写相同的条目.


Nei*_*irk 6

你的第一张地图以bool为关键.bool只有两个值.您提供整数作为输入.非0英寸为真,0英寸为假.因此,所有的钥匙都是正确的.其中两个被最后一个覆盖.这就是尺寸为1的原因.