2017-10-01 10 views
1

これはおそらく愚かなエラーですが、間違ったことを見つけることができません。イテレータの設定中に奇妙なエラーが発生する

エラーはno operator "=" matches these operandsです。ここで

は私のコードは、私がit = m1.begin()文でループのためのエラーを取得し、私はそれを反復処理することができない場合はマップをプリントアウトするために行くことができない...

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++) { 

    } 
} 

です。

+0

また、私は別の方法でイテレータを設定し、それはうまくいきましたので、このメソッドで何が間違っているのか分かりません。 – mike

+0

'm1.begin()'の型は 'map :: const_iterator'です。' m1'は 'const'です。 –

答えて

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++) { 

    } 
} 
0

const_iteratorまたはautoを使用してください。

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++) { 
    } 
} 
関連する問題