因此,我试图让迭代器传递给作为函数引用的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();

最佳答案

这里的问题是mconst,因此m.begin()返回的是const_iterator而不是iterator。您要么需要使用:

std::map<char, int>::const_iterator it = m.begin();

为了简单起见,请使用auto,您可以:
auto it = m.begin();

关于c++ - 获取迭代器到const map <char,int>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34816506/

10-11 23:14
查看更多