c++ - 获取向量的总和
问题描述
如何返回这个整数向量数组的总和?我下面的代码返回错误的值。
int simpleArraySum(vector<int> ar) {
int sum = 0;
int length = sizeof(ar);
for (int i = 0; i < length; i++){
sum += ar[i];
}
return sum;
}
解决方案
对于初学者,向量应该通过引用传递给函数。否则将创建向量的冗余副本。此外,参数应该用常量引用声明,因为向量本身在函数中没有改变。
对于总和,您应该使用该类型long long int
,因为不排除可能存在溢出。
本声明
int length = sizeof(ar);
没有意义。该变量length
保持该类型对象的大小,而std::vector<int>
不是存储在向量中的元素数量。
因此,可以通过以下方式定义函数
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
头中声明的标准算法<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# - 如何在 ASP.NET Core 操作中高效地以 json 和异步方式返回大量值?
- php - 我的 response.php 页面适用于一个页面,但同样不适用于另一个页面
- c - 通过 BLE 发送操纵杆命令
- c# - 从 gulp nunit 运行结果中隐藏 SamlMessageSignature 输出
- collections - 具有相同端点的 API 模拟 Postman 服务器
- export - Filemaker PSOS 导出
- html - Chrome 不会为具有 z-index 和溢出滚动的绝对定位元素的单个子元素显示背景颜色
- haxe - 查找哪个模块导入了另一个模块
- php - Wordpress 获取术语 - 隐藏空,隐藏已分配帖子但该帖子也分配给另一个分类术语的术语
- r - 如何通过 write_csv 正确打印 μ?