所以,我试图获得一个迭代器到我作为const函数的const引用传入的映射。当我做这样的事情时,我的编译器会抱怨:
bool func(string s, const map<char, int>& m){
std::map<char, int>::iterator it = m.begin();
/*more code here...*/
}
我该怎么做?
错误消息是:
error: no viable conversion from 'const_iterator' (aka '__map_const_iterator<typename __base::const_iterator>') to 'std::map<char, int>::iterator'
(aka '__map_iterator<typename __base::iterator>')
std::map<char, int>::iterator it = m.begin();
答案 0 :(得分:4)
此处的问题是m
为const
,因此m.begin()
会返回const_iterator
而不是iterator
。您需要使用:
std::map<char, int>::const_iterator it = m.begin();
或者为了简单起见使用auto
,你有:
auto it = m.begin();
答案 1 :(得分:2)
您应该使用const_iterator
代替:
std::map<char, int>::const_iterator it = m.begin();