把一个 std::map
的引用作为 const 传递会导致 [] 运算符出现问题,这是有原因的吗?当我使用 const 时,我得到了这个编译器错误(gcc 4.2):
error: no match for ‘operator[]’ in ‘map[name]’
以下是函数原型:
void func(const char ch, std::string &str, const std::map<std::string, std::string> &map);
此外,我应该提到,当我删除std::map
前面的const
关键字时,就没有问题了。
如果我被正确告知,[]运算符实际上会在找不到键时向映射中插入新对,这当然可以解释为什么会发生这种情况,但我无法想象这种行为在任何情况下都是可接受的。
如果有更好的方法,例如使用find而不是[],我将不胜感激。但是我似乎也无法使find正常工作...我收到const不匹配的迭代器错误。