2010-07-20 22 views
8

İki katına bir vektörüm var ve birincisinin elemanlarının toplamı olan başka bir dizi oluşturmam gerekiyor. Örneğin;C++ 'da iki katına bir vektörün birikimli toplamı nasıl hesaplanır?

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]; 

Yukarıdaki kümülatif toplamı gerçekleştirecek yerleşik bir işlev var mı? o C++ ise olmadan

+1

Hangi dili kullanıyorsunuz? – Oded

+0

@Oded: Büyük olasılıkla C++ ile std ad alanı dahil edildi. Wawel'dan bir onay var mı? – Akusete

+1

@Akusete - muhtemelen, ancak <> 'genel sözdizimini destekleyen ve C benzeri bir yapıya sahip olan herhangi bir dil olabilir (Java, C#, C++ ...) – Oded

cevap

18

şey

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

gibi hile yapmak gerekir, bunu test ettikten. (Aslında, plus<double>() varsayılan olarak kullanılabilir, it seems.)

+0

İkili işlemi açıkça iletmek isterseniz, std :: plus () 'olmalıdır. – Philipp

+2

Teşekkürler, her zaman yanlış hatırlıyorum! Şimdi, o artı ungood ya da ne oldu ...? Herhalde 1984'e kadar toplanmıştı! :-) –

+1

#include std :: partial_sum kullanmak için gereklidir. std :: plus , Array türü std :: vektör ise kesinlikle gerekli değildir. –

İlgili konular