Казалось бы, что в области действия этой петли существует карта постоянная.Например, объявлен ли цикл в методе класса const, например, так:
void method() const // const method
{
// Do stuff.
}
или передан в качестве аргумента const, как этот?
void function(const map<unsigned int, double>& pT_Spam)
{
// Do stuff.
}
используйте константные итераторы:
for(map<unsigned int, double>::const_iterator it=pT_Spam.begin() ; it!=pT_Spam.end() ; it++)
{
/*code*/
}
Или, если вы используете C ++ 11, вам следует использовать ключевое слово auto:
for(auto it=pT_Spam.begin() ; it!=pT_Spam.end(); it++)
{
/*code*/
}
Так как в показанном вами случаеВы должны использовать константные итераторы, вы не можете использовать их для изменения карты или данных в ней.Это правильность, и это хорошо:).