In dem Bemühen, so faul wie möglich zu sein, die ich in einer Matrix alsSpaltenvektor mit Zeile bedeutet - mit Std :: Accumulate?
lasvector< vector<double> > data (rows, vector<double> (columns));
und versuchen, so viele STL Leckereien wie möglich zu nutzen.
Eine Sache, die ich als nächstes tun muss, ist die Zeilenmittel zu berechnen. In C-Stil-Programmierung das wäre
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();
In In C++, how to compute the mean of a vector of integers using a vector view and gsl_stats_mean? wird erläutert, dass für einen Vektor von Zahlen können Sie ein Vektor in einer Zeile bedeuten berechnen, ohne die Größe() Operators bei jedem Schritt Aufruf:
double mean = std::accumulate(stl_v.begin(), stl_v.end(), 0.0)/stl_v.size();
Ist es möglich, diese Iteratoren über einen Vektor von Vektoren zu verwenden? Ein Zwischenformular ist
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();
bereits 1 Zeile weg! aber mit STL-Funktionen ist es auch möglich, den [i] Index loszuwerden? (Auf der obersten Ebene ist es nur eine Frage der Sammlung der Zeile bedeutet).
Das ist, was ich wünschte, ich hätte darüber nachgedacht. +1 –
+1. Ich nehme den Kommentar in meiner Antwort zurück :) – eladidan
ehrfürchtige Antwort +1 :) – M3taSpl0it