xsl*_*xsl 2 c++ stl average list
我必须纠正一些C++/STL代码.不幸的是,我的C++经验很少,对STL一无所知.不过我完成了大部分工作,但下面的功能仍然给我带来了问题:
C++源码:
double MyClass::CalculateAvg(const std::list<double> &list)
{
double avg = 0;
std::list<int>::iterator it;
for(it = list->begin(); it != list->end(); it++) avg += *it;
avg /= list->size();
}
Run Code Online (Sandbox Code Playgroud)
C++标题:
static double CalculateAvg(const std::list<int> &list);
Run Code Online (Sandbox Code Playgroud)
它最有可能是从列表中计算平均值,但它符合很多错误.我试图在网上搜索解决方案,但我找不到任何东西.如果有人可以帮助我,我会很高兴的.
更新:感谢您的快速回复.接受的答案解决了我所有的问题.
Pet*_*der 32
一些事情:
return avg;
)->
运营商是指向对象的指针.你有一个列表的引用,所以你使用list.begin()
和不使用list->begin()
(与其他成员函数相同)const_iterator
,而不是iterator
.无论如何,您应该执行以下操作:
return std::accumulate(list.begin(), list.end(), 0.0) / list.size();
(可选)检查list.size() == 0
您的用例中是否可以.
Pie*_*BdR 13
所以,第一个错误是:
std::list<int>::iterator it;
Run Code Online (Sandbox Code Playgroud)
您可以在整数列表上定义迭代器,并使用它来迭代双精度列表.此外,迭代器只能用于非常量列表.你需要一个恒定的运算符.你应该写:
std::list<double>::const_iterator it;
Run Code Online (Sandbox Code Playgroud)
最后,你忘了返回值.
编辑:我没有看到,但您将列表作为参考传递,但将其用作指针.所以更换所有list->
受list.