#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;
}
我的程序使用 accumulate 返回抽象值,但如果我使用 for 循环,答案就来了。
最佳答案
std::accumulate
有一个小陷阱,即您传递的初始值。人们很容易忽略这个值用于推导参数 T
也是返回类型(并且返回类型不是 necesarily the value_type
容器)。通过传递一个 long long
作为初始值来修复它:
sum = accumulate(v.begin(),v.end(),0LL);
关于c++ - 使用累加对包含 long long int 的 vector 求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46691506/