2010-07-20 29 views
8

Tôi có một véc tơ tăng gấp đôi và tôi cần tạo một mảng khác là tổng tích lũy của các phần tử đầu tiên. Ví dụ;Làm thế nào để tính toán tổng tích lũy cho một véc tơ của đôi trong 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]; 

Có chức năng trong xây dựng nào sẽ thực hiện tổng tích lũy trên không?

+1

Bạn đang sử dụng ngôn ngữ nào? – Oded

+0

@Oded: Rất có thể C++ với không gian tên std được bao gồm. Bất kỳ xác nhận từ Wawel? – Akusete

+1

@Akusete - có thể, nhưng có thể là bất kỳ ngôn ngữ nào hỗ trợ cú pháp chung '<>' và có cấu trúc giống như C (Java, C#, C++ ...) – Oded

Trả lời

18

mà không cần phải thử nghiệm nó, một cái gì đó giống như

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

nên làm các trick, nếu đó là C++. (Trên thực tế, bạn có thể đặt mặc định plus<double>(), it seems.)

+0

Nếu bạn muốn chuyển giao thao tác nhị phân một cách rõ ràng, nó phải là 'std :: plus ()'. – Philipp

+2

Xin cảm ơn, tôi luôn luôn coi thường! Bây giờ, đó là cộng với không tốt hay gì ...? Có lẽ tổng hợp đến năm 1984, anyway! :-) –

+1

#include là cần thiết để sử dụng std :: partial_sum. std :: plus chắc chắn không cần thiết nếu Array thuộc loại std :: vector . –

Các vấn đề liên quan