尝试设置迭代器时出现奇怪的错误

时间:2017-10-01 04:10:24

标签: c++

这可能是一个愚蠢的错误,但我似乎无法找到我做错了什么。

我得到的错误是no operator "=" matches these operands

这是我的代码......

void print_words(const map < string, int >& m1) {
map<string, int>::iterator it;
cout << "Number of non-empty words: " << m1.size() << '\n';

int count = 0;
for (it = m1.begin(); it != m1.end(); it++) {

    }
}

我在it = m1.begin()语句中的for循环中收到错误,如果我无法遍历它,我就无法打印出地图。

2 个答案:

答案 0 :(得分:1)

使用const迭代器:

void print_words(const map < string, int >& m1) {
    cout << "Number of non-empty words: " << m1.size() << '\n';
    int count = 0;
    for (map<string, int>::const_iterator it = m1.cbegin(); it != m1.cend(); it++) {

    }
}

答案 1 :(得分:0)

使用const_iteratorauto

void print_words(const map < string, int >& m1) {
    cout << "Number of non-empty words: " << m1.size() << '\n';
    int count = 0;
    for (auto it = m1.cbegin(); it != m1.cend(); it++) {
    }
}