【发布时间】:2020-09-29 13:43:55
【问题描述】:
vector<int> nums={1,12,-5,-6,50,3};
int k=4;
int n=nums.size();
for(int i=0;i<=n-k;i++)
cout<<accumulate(nums.begin()+i,nums.begin()+i+k-1,0)<<" ";
以上代码的输出为:8 1 39
问题是为什么[1,12,-5,-6]之和是8,应该是2=(1+12-5-6)?
与 1 相同,应该是 51=(50+12-5-6),并且
39 也一样,应该是 42=(50+3-6-5)?
【问题讨论】:
-
k-1其中两个字符不应该存在。 -
旁白:我会写成
for (auto it = nums.begin(); it + k != nums.end(); ++it) std::cout << accumulate(it, it + k, 0) << " ";
标签: c++ c++14 accumulate