level 10
挂羊头卖犬肉
楼主
题目:假定v是vector<double>类型的对象,则调用accumulate(v.begin(),v.end,0)是否有错?如果有的话,错在哪里?
我写代码跑了一下,果然报错,改成accumulate(v.begin(),v.end,0)就不报错了。求问为什么会报错,难道int自动转double都不让转了吗
代码如下:
#include <numeric>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<double> v;
for(int i=0;i<=10;i++)
v.push_back(i);
double y=accumulate(v.begin(),v.end(),0);
//报错,最后一个0改成0.0就不会报错了
cout<<y<<endl;
return 0;
}