vector de columna con medios de fila - con std :: acumular?

En un esfuerzo por ser lo más perezoso posible, leo en una matriz como

vector< vector<double> > data ( rows, vector<double> ( columns ) );

y tratar de usar tantas golosinas STL como pueda.

Una cosa que debo hacer a continuación es calcular los medios de la fila. En la programación de estilo C eso sería

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();

EnEn C ++, ¿cómo calcular la media de un vector de enteros usando una vista vectorial y gsl_stats_mean? se explica que para un vector de números puede calcular una media de vector en una línea sin llamar al operador size () en cada paso:

double mean = std::accumulate(stl_v.begin(), stl_v.end(), 0.0) / stl_v.size();

¿Es posible usar estos iteradores sobre un vector de vectores? Una forma intermedia es

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();

¡Ya se ha ido 1 línea! pero utilizando las funciones STL, ¿es posible deshacerse del índice [i] también? (En el nivel superior solo es cuestión de recolectar los medios de la fila).

Respuestas a la pregunta(2)

Su respuesta a la pregunta