有指针时使用 std::accumulate

问题描述

当存在指向向量的指针并且我们想使用累加来对数字求和时,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};

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...