2010-07-20 24 views
8

Ho un vettore di doppio e ho bisogno di creare un altro array che è una somma cumulativa degli elementi del primo. Per esempio;Come calcolare la somma cumulativa per un vettore di doppi in 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]; 

Esiste una funzione integrata che eseguirà la somma cumulativa sopra riportata?

+1

Che lingua stai usando? – Oded

+0

@Oded: è molto probabilmente C++ con lo spazio dei nomi std incluso. Qualche conferma da parte di Wawel? – Akusete

+1

@Akusete - probabilmente, ma potrebbe essere qualsiasi linguaggio che supporta la sintassi '<>' e ha una struttura C simile (Java, C#, C++ ...) – Oded

risposta

18

Senza aver provato, qualcosa come

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

dovrebbe fare il trucco, se si tratta di C++. (In realtà, il può essere impostato come predefinito, it seems.)

+0

Se si desidera passare esplicitamente l'operazione binaria, deve essere 'std :: plus ()'. – Philipp

+2

Grazie, mi ricordo sempre male! Ora, era più un ungood o che cosa ...? Probabilmente sommato al 1984, comunque! :-) –

+1

#include è necessario per utilizzare std :: partial_sum. std :: plus non è assolutamente necessario se Array è del tipo std :: vector . –