【发布时间】:2010-12-01 06:52:47
【问题描述】:
为了这个问题,人为的例子:
void MyClass::MyFunction( int x ) const
{
std::cout << m_map[x] << std::endl
}
这不会编译,因为 [] 运算符是非常量的。
这很不幸,因为 [] 语法看起来很干净。相反,我必须这样做:
void MyClass::MyFunction( int x ) const
{
MyMap iter = m_map.find(x);
std::cout << iter->second << std::endl
}
这一直困扰着我。为什么 [] 运算符是非常量的?
【问题讨论】:
-
如果给定元素不存在,
operator[]应该怎么做? -
@Frerich Raabe:与 at 成员函数相同:抛出 std::out_of_range