以下代码运行良好:
但不包括以下代码:
大多数情况下,我更喜欢让我的大部分东西变成不可变的,原因是:
std::map<int, int>& m = std::map<int, int>();
int i = m[0];
但不包括以下代码:
// error C2678: binary '[' : no operator...
const std::map<int, int>& m = std::map<int, int>();
int i = m[0];
大多数情况下,我更喜欢让我的大部分东西变成不可变的,原因是:
http://www.javapractices.com/topic/TopicAction.do?Id=29
我查看地图源代码。它有:mapped_type& operator[](const key_type& _Keyval)
有没有任何原因,导致std::map无法提供
const mapped_type& operator[](const key_type& _Keyval) const
const
版本的operator[]
,如果条目不在映射中,则抛出异常(或具有未定义的行为)? - Michael Burrvector
中,at
会抛出异常,为什么map
中的operator[] const
不能抛出异常呢? - GManNickG