为了尽可能懒惰,我在矩阵中读取为
vector< vector<double> > data ( rows, vector<double> ( columns ) );
并尝试使用尽可能多的 STL 好东西。
接下来我需要做的一件事是计算行均值。在 C 风格的编程中,这将是
vector<double> rowmeans( data.size() );
for ( int i=0; i<data.size(); i++ )
for ( int j=0; j<data[i].size(); j++ )
rowmeans[i] += data[i][j]/data[i].size();
在C++ 中,如何使用向量视图和 gsl_stats_mean 计算整数向量的平均值?解释说,对于数字向量,您可以在一行中计算向量均值,而无需在每一步调用 size() 运算符:
double mean = std::accumulate(stl_v.begin(), stl_v.end(), 0.0) / stl_v.size();
是否可以在向量向量上使用这些迭代器?中间形式是
vector<double> rowmeans( rows );
for ( int i=0; i<data.size(); i++ )
rowmeans[i] = std::accumulate(data[i].begin(), data[i].end(), 0.0) / data[i].size();
已经有 1 行不见了!但是使用 STL 函数是否也可以摆脱 [i] 索引?(在顶层这只是收集行手段的问题)。