在C++里求数组平均值,核心思路是先算出数组所有元素的总和,再用总和除以元素个数。标准库中的accumulate算法位于numeric头文件,能够很方便地完成区间求和,比手写for循环更简洁。

使用accumulate计算数组总和
accumulate函数的前两个参数是迭代器区间,第三个参数是累加初始值。对于原生数组,可以用指针作为迭代器传入。
#include <iostream>
#include <numeric>
int main() {
int arr[] = {10, 20, 30, 40, 50};
int n = sizeof(arr) / sizeof(arr[0]);
// 使用accumulate求和,初始值为0
int sum = std::accumulate(arr, arr + n, 0);
double avg = static_cast<double>(sum) / n;
std::cout << "平均值: " << avg << std::endl;
return 0;
}
为什么要注意类型转换
上面代码中,sum是int类型,n也是int类型。如果直接写sum / n会得到整数除法结果,丢失小数部分。通过static_cast<double>把sum转为double,再除以n,才能得到正确的浮点平均值。
用于vector容器
如果是std::vector,用法类似,传入begin和end迭代器即可。
#include <iostream>
#include <vector>
#include <numeric>
int main() {
std::vector<double> v = {1.5, 2.5, 3.0, 4.0};
double sum = std::accumulate(v.begin(), v.end(), 0.0);
double avg = sum / v.size();
std::cout << "vector平均值: " << avg << std::endl;
return 0;
}
小结
用accumulate求数组平均值只需要两步:调用accumulate得到总和,再除以元素个数。记住根据数据特点选择初始值类型,并在除法前做必要的类型转换,就能写出安全清晰的统计代码。
C++accumulate数组平均值修改时间:2026-07-26 07:09:13