C映射迭代器问题
发布时间:2020-12-16 10:25:34 所属栏目:百科 来源:网络整理
导读:我在以下代码中有一个奇怪的错误: float Student::getAverageMark() const throw (NoMarkException){ int sum = 0; int count = 0; for(mapstring,float::iterator iter = marks.begin(); iter != marks.end(); ++iter) { sum += iter-second; count++; } r
我在以下代码中有一个奇怪的错误:
float Student::getAverageMark() const throw (NoMarkException) { int sum = 0; int count = 0; for(map<string,float>::iterator iter = marks.begin(); iter != marks.end(); ++iter) { sum += iter->second; count++; } return sum/count; } 正如您所看到的,它没有什么不同寻常的,它是一个计算地图中平均标记的简单代码.我在一个在线编译器中对它进行了测试并且它有效,但是当我尝试在我的机器上编译它时(我正在使用带有GNU GCC编译器的CodeBlocks)我收到此错误:
解决方法
你有一个const函数试图迭代我假设的成员变量(标记).
确保使用const迭代器: for(map<string,float>::const_iterator iter = marks.begin(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |