2010-07-20 59 views
8

Tengo un vector de dobles y necesito crear otra matriz que es una suma acumulativa de los elementos de la primera. Por ejemplo;¿Cómo calcular la suma acumulada para un vector de dobles en C++?

vector<double> Array(10,1); 
vector<double> Sum(10); 

Sum[0] = Array[0]; 
for(unsigned int i=1; i<Array.size(); i++) 
    Sum[i] = Sum[i-1] + Array[i]; 

¿Hay alguna función integrada que realice la suma acumulada anterior?

+1

¿Qué idioma está usando? – Oded

+0

@Oded: Lo más probable es C++ con el espacio de nombres estándar incluido. ¿Alguna confirmación de Wawel? – Akusete

+1

@Akusete - posiblemente, pero podría ser cualquier lenguaje que admita la sintaxis genérica '<>' y tenga una estructura similar a C (Java, C#, C++ ...) – Oded

Respuesta

18

Sin haber probado, algo así como

std::partial_sum(Array.begin(), Array.end(), Sum.begin(), plus<double>());

debe hacer el truco, si se trata de C++. (De hecho, el plus<double>() puede ser predeterminado, it seems).

+0

Si desea pasar la operación binaria explícitamente, debe ser 'std :: más ()'. – Philipp

+2

¡Gracias, siempre recuerdo mal! Ahora, ¿fue eso más ungood o qué ...? ¡Probablemente sumado a 1984, de todos modos! :-) –

+1

#include es necesario para usar std :: partial_sum. std :: plus definitivamente no es necesario si Array es del tipo std :: vector . –

Cuestiones relacionadas