使用累加对包含长整型的向量求和


#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);

最新更新