读书人

大家帮忙看看这求平均值的模板为什么错

发布时间: 2012-02-07 17:45:37 作者: rapoo

大家帮忙看看这求平均值的模板为什么错?
#include <iostream>
#include <iterator> //for the istream_iterator <> template
using namespace std;

template <typename Iter>
double average(Iter a,Iter b)
{
double sum=0.0;
for(;a!=b;a++)
sum+=*a;
return sum/(b-a);

}

int main()
{
cout < <average(istream_iterator <double> (cin),istream_iterator <double> ());

return 0;
}

//组合键 Ctrl+Z 接着按回车 。关闭输入流

[解决办法]
并不是所有迭代器都支持相减的
只有随机迭代器才可以
[解决办法]
//sum/(b-a)
第一,循环结束时,a已经等于b了,再相减也不对了。
第二,相个跌代器可以相减,必须要求是随机访问跌代器才行,而istream_iterator只是个输入跌代器,跌代器中的下下品,呵呵。——一不能写,二不能退,更别提相减了。
可以作跌代器减法的,标准库中好像只有string, deque和vector的跌代器可以吧。

读书人网 >C++

热点推荐