繁体   English   中英

有指针时使用 std::accumulate

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM