Стремясь быть максимально ленивым, я читаю в матрице как
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]? (на верхнем уровне это просто вопрос сбора средств строки).