我尝试将 const 传递给它有效的向量:
前任:
void damn(const vector <bool> &bb)
{
for (int i=0; i<bb.size(); i++)
cout<<bb[i]<<endl;
}
但是当尝试使用地图时,它不会:
void pas(const map <string, float> &mm)
{
cout<<mm["a"];
cout<<mm["b"];
}
我想知道为什么没有。
map::operator[]
有点奇怪。它这样做:
- 寻找钥匙。
- 如果找到,请将其归还。
- If not, 插入它并默认构造其关联值。
- 然后返回对新值的引用。
步骤 3 不兼容const
尼斯。而不是有两个不同功能的operator[]
重载,语言强迫你使用map::find
for const
对象。
或者,人们可能会争辩说,什么会map::operator[] const
如果参数不在地图中怎么办?抛出异常?未定义的行为? (毕竟,这就是vector::operator[]
索引越界。)无论如何,这个问题都被避免了,只给我们带来了一点不便。
my_map.find(key)
回报my_map.end()
if the key
没有找到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)