我在以下代码中遇到了一个奇怪的错误:
正如您所见,这只是一个简单的代码,用于计算映射中平均分数。我在在线编译器上测试过它,并且它可以正常工作,但是当我尝试在我的计算机上编译它时(我正在使用CodeBlocks和GNU GCC编译器),我遇到了以下错误: ``` 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| ```
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;
}
正如您所见,这只是一个简单的代码,用于计算映射中平均分数。我在在线编译器上测试过它,并且它可以正常工作,但是当我尝试在我的计算机上编译它时(我正在使用CodeBlocks和GNU GCC编译器),我遇到了以下错误: ``` 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| ```
marks.cbegin()
和marks.cend()
。 - WhozCraigconst_iterator
这个词,那么你首先要做的就是检查容器的类型以及你是否处于const
上下文中。然后所有的事情都会在几秒钟内落实。:) 这需要实践。 - Lightness Races in Orbitstd::accumulate
,无论是C++11还是不是(尽管使用lambda表达式确实使得在这种情况下使用算法更加可接受) - Praetorian