加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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)我收到此错误:

error: conversion from ‘std::map,float>::const_iterator {aka std::_Rb_tree_const_iterator,float> >}’ to non-scalar type ‘std::map,float>::iterator {aka std::_Rb_tree_iterator,float> >}’ requested|

解决方法

你有一个const函数试图迭代我假设的成员变量(标记).
确保使用const迭代器:

for(map<string,float>::const_iterator iter = marks.begin();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读