2010-07-20 3 views
8

У меня есть вектор двойников, и мне нужно создать еще один массив, который является суммарной суммой элементов первого. Например;Как вычислить суммарную сумму для вектора удвоений в 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]; 

Есть ли встроенная функция, которая будет выполнять вышеуказанную совокупную сумму?

+1

Какой язык вы используете? – Oded

+0

@Oded: Скорее всего, C++ с включенным пространством имен std. Любое подтверждение от Wawel? – Akusete

+1

@Akusete - возможно, но может быть любым языком, который поддерживает «<>» общий синтаксис и имеет C-подобную структуру (Java, C#, C++ ...) – Oded

ответ

18

Без испытав его, что-то вроде

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

должен сделать трюк, если это C++. (На самом деле, plus<double>() может быть отключен по умолчанию, it seems.)

+0

Если вы хотите передать двоичную операцию явно, это должно быть 'std :: plus ()'. – Philipp

+2

Спасибо, я всегда забываю! Теперь это был плюс ungood или что ...? Наверное, суммарно до 1984 года, во всяком случае! :-) –

+1

#include необходимо использовать std :: partial_sum. std :: plus определенно не требуется, если Array имеет тип std :: vector . –

Смежные вопросы