获取const映射的迭代器<char,int =“”>

时间:2016-01-15 17:23:03

标签: c++ dictionary iterator

所以,我试图获得一个迭代器到我作为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();

2 个答案:

答案 0 :(得分:4)

此处的问题是mconst,因此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();
相关问题