头文件:
#include<numeric>
std::accumulate 基本用法:
vector<int> vi{1, 2, 3};
cout << accumulate(vi.begin(), vi.end(), 0); // 6
accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。
计算均值和方差:
void calstdev(vector<float> A, float &mean, float&stdev)
{
float sum = std::accumulate(std::begin(A), std::end(A), 0.0);
mean = sum / A.size(); //均值
float accum = 0.0;
std::for_each(std::begin(A), std::end(A), [&](const float d) {
accum += (d - mean)*(d - mean);
});
stdev = sqrt(accum / (A.size() - 1)); //方差
}