【发布时间】:2013-12-28 13:07:15
【问题描述】:
void example(const map<string, vector<int> > & num);
int main()
{
map<string, vector<int> >num;
num["A"].push_back(1);
example(num);
return 0;
}
void example(const map<string, vector<int> > & num)
{
cout << num["A"].size() << endl;
}
我认为size()并没有改变num的值,但是为什么编译时会出错? 当我在示例函数中删除关键字 const 时就可以了。
【问题讨论】:
-
这是因为
num["A"]是对std::map的非 const 操作。 -
C++11 中有一个替代方案:stackoverflow.com/a/13902825/893693
-
@bamboon:哦,感谢上帝!而且,显然,你以前告诉过我这件事……