首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

大家帮忙看看这求平均值的模板为什么错?解决方法

2012-02-07 
大家帮忙看看这求平均值的模板为什么错?#include iostream#include iterator//fortheistream_iterator

大家帮忙看看这求平均值的模板为什么错?
#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的跌代器可以吧。

热点排行