问题描述
当存在指向向量的指针并且我们想使用累加来对数字求和时,this 是唯一的解决方案吗? 有没有比编写 lambda 函数并使用四参数累加类型更简单的解决方案?
另外,使用std::sort
,情况会一样吗?
代码如下:
#include <random>
#include <vector>
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main() {
const int N=3;
auto p=make_unique<array<int,N>> ();
(*p)[0]=3;
(*p)[1]=4;
(*p)[2]=5;
sum=accumulate(p,?,0);
return 0;
}
解决方法
回答您的即时问题:
std::accumulate(p->begin(),p->end(),0);
同样的语法也适用于其他 STL 算法。
对代码段的其他改进:
避免使用 #include<bits/stdc++.h>
、see this post。同样,对于 using namespace std
,它被认为是不好的做法。
const N=3
-> const auto N=3
std::array
不是向量,您可以使用初始化列表语法直接初始化它:
const auto* obj = new std::array<int,3>{3,4,5};