[英]using std::accumulate when there is pointer
当有一个指向向量的指针并且我们想使用累积来总结数字时,这是唯一的解决方案吗? 有没有更简单的解决方案,而不是编写 lambda function 并使用四参数类型的累加?
另外,对于使用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>
, 请参阅这篇文章。 同样对于using namespace std
,它被认为是不好的做法。
const N=3
->
const auto N=3
std::array
不是向量,您可以使用初始化列表语法直接初始化它:
const auto* obj = new std::array<int,3>{3,4,5};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.