Chcąc być tak leniwy, jak to możliwe czytam w matrycy jakowektor kolumnowy z wierszem oznacza - ze std :: kumulować?
vector< vector<double> > data (rows, vector<double> (columns));
i starają się wykorzystać jak najwięcej bajerów STL, jak mogę.
Jedna rzecz, którą muszę zrobić, to obliczyć środki rzędu. W programowaniu C-styl, który byłby
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();
w In C++, how to compute the mean of a vector of integers using a vector view and gsl_stats_mean? wyjaśnione jest, że przez wektor liczb można obliczyć wektor znaczy w jednej linii bez zawijania operatora size() na każdym kroku:
double mean = std::accumulate(stl_v.begin(), stl_v.end(), 0.0)/stl_v.size();
Czy można używać tych iteratorów przez wektor wektorów? Formularz pośredni to
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();
już 1 wiersz zniknął! ale używając funkcji STL można pozbyć się również indeksu [i]? (na najwyższym poziomie to tylko kwestia zbierania środków rzędu).
Tego właśnie chciałbym wymyślić. +1 –
+1. Odzyskuję komentarz w mojej odpowiedzi :) – eladidan
niesamowita odpowiedź +1 :) – M3taSpl0it