#include <iostream>
#include <vector>
#include <numeric>
#include <iterator>
using namespace std;
int main()
{
int N;
cin>>N;
long long int x,sum=0;
std::vector<long long int> v;
for(int i=0;i<N;i++)
{
cin>>x;
v.push_back(x);
}
/*vector<long long int>::iterator itr;
itr = v.begin();
for(itr=v.begin();itr<v.end();itr++)
sum += *itr;*/
sum = accumulate(v.begin(),v.end(),0);
cout<<sum;
return 0;
}
我的程序使用累积返回抽象值,但是如果我使用 for 循环,答案就来了。
>std::accumulate
有一个小陷阱,即您传递的初始值。很容易忽略此值用于推断参数T
,该参数也是返回类型(并且返回类型不一定是容器的value_type
)。通过将long long
作为初始值传递来修复它:
sum = accumulate(v.begin(),v.end(),0LL);