gpt4 book ai didi

c++ - 获取 vector 的总和

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:20:37 28 4
gpt4 key购买 nike

如何返回这个整数 vector 数组的总和?我下面的代码返回了错误的值。

int simpleArraySum(vector<int> ar) {
int sum = 0;
int length = sizeof(ar);
for (int i = 0; i < length; i++){
sum += ar[i];
}
return sum;

}

最佳答案

对于初学者来说, vector 应该通过引用传递给函数。否则将创建 vector 的冗余拷贝。此外,参数应该声明为常量引用,因为 vector 本身在函数中没有改变。

对于总和,您应该使用类型 long long int因为不排除会溢出。

这个声明

int length = sizeof(ar);

没有意义。变量 length保持类型对象的大小 std::vector<int>不是 vector 中存储的元素数。

因此可以通过以下方式定义函数

long long int simpleArraySum( const std::vector<int> & ar )
{
long long int sum = 0;

for ( const auto &item : ar ) sum += item;

return sum;
}

另一种方法是使用标准算法 std::accumulate在 header 中声明 <numeric> .例如

#include <vector>
#include <iterator>
#include <numeric>

//...

long long int simpleArraySum( const std::vector<int> & ar )
{
return std::accumulate( std::begin( ar ), std::end( ar ), 0ll );
}

关于c++ - 获取 vector 的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58248849/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com