为什么 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
.
时,1
、3
、5
都会产生 true
只是一个猜测,但您的第一个地图将 bool
作为键类型,并且所有值 1, 3 and 5
的计算结果为真。
您只能重写同一个条目。
您的第一张地图以 bool 为键。 bool 只有两个值。您提供整数作为输入。非 0 整数为真,0 整数为假。因此,您所有的密钥都是真实的。其中两个被最后一个覆盖。这就是大小为 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();
打印出
13
std::map
是唯一键。当转换为 bool
.
1
、3
、5
都会产生 true
只是一个猜测,但您的第一个地图将 bool
作为键类型,并且所有值 1, 3 and 5
的计算结果为真。
您只能重写同一个条目。
您的第一张地图以 bool 为键。 bool 只有两个值。您提供整数作为输入。非 0 整数为真,0 整数为假。因此,您所有的密钥都是真实的。其中两个被最后一个覆盖。这就是大小为 1 的原因。