C++中const使用避坑
问题 函数名(const 类型 参数)const
如下代码:
//template <class T>
//unordered_map<T, int> mapA;
//或者map<T, int> mapA;
//如下函数:
int getValue(const T& i) const
{
return mapA[i];
}
编译报错:passing’ const std::unordered_map<T, int >’ as ‘this’ argument discards qualifiers
原因:
对于const的对象使用了非const的成员函数,在unordered_map和map中使用operator[ ],是非const成员函数,当mapA中不存在传入key值 i 时,unordered_map和map 会在map中插入一个key为 i并且value为0的元素,违反了getValue函数后加const限制,即不可修改成员成员数据。
解决办法:
使用mapA.at(i) 代替mapA[i]
除此之外,deque[i]是可以的