2015-02-19 17 views
10

Có phương pháp nào được triển khai trong thư viện C++ cho phép bạn tổng hợp các giá trị của hai vectơ (có cùng kích thước và loại khóa học) không?
Ví dụ:Giá trị tổng của 2 vectơ

std::vector<int> a;//looks like this: 2,0,1,5,0 
std::vector<int> b;//looks like this: 0,0,1,3,5 

Bây giờ sau đó thêm giá trị của họ với nhau nên trông như thế này:

//2,0,2,8,5 

Câu trả lời tôi hy vọng là một trong hai "Không không có" hoặc "có" + phương pháp.

+3

Có quá tải ['std :: transform'] (http://en.cppreference.com/w/cpp/algorithm/transform) hoạt động trên các cặp phần tử từ hai phạm vi. – juanchopanza

+3

btw, tôi đã nhận thấy một số người nghĩ rằng nó có quyền xuống bỏ phiếu câu hỏi này. Bất kỳ lý do cụ thể cho điều đó? Tôi ít nhất là khá chắc chắn tôi đã theo tất cả các quy tắc liên quan đến việc đặt một câu hỏi đúng: | – MrGuy

Trả lời

24

Bạn có thể sử dụng std::transformstd::plus<int>()

std::vector<int> a;//looks like this: 2,0,1,5,0 
std::vector<int> b;//looks like this: 0,0,1,3,5 

// std::plus adds together its two arguments: 
std::transform (a.begin(), a.end(), b.begin(), a.begin(), std::plus<int>()); 
// a = 2,0,2,8,5 

Hình thức std::transform mất 5 đối số:

  • Hai đầu tiên là vòng lặp đầu vào cho các vị trí ban đầu và cuối cùng của chuỗi đầu tiên.
  • Thứ ba là bộ lặp đầu vào cho vị trí ban đầu của dãy thứ hai.
  • Thứ tư là bộ lặp đầu ra của vị trí ban đầu của phạm vi nơi lưu trữ kết quả hoạt động.
  • Đối số cuối cùng là hàm nhị phân chấp nhận hai phần tử làm đối số (một trong hai chuỗi) và trả về một số giá trị kết quả có thể chuyển đổi thành loại được chỉ ra bởi OutputIterator.
+0

Chúc mừng, đó là chính xác những gì tôi đang tìm kiếm :) Sẽ chấp nhận câu trả lời đó càng sớm càng tốt: p – MrGuy

+1

Tôi đã sửa các đối số. Hai đầu tiên là các bộ lặp đầu vào cho các vị trí đầu tiên và cuối cùng của chuỗi đầu tiên. Vị trí thứ ba là vị trí ban đầu của dãy thứ hai. Vị trí thứ tư vị trí ban đầu của phạm vi nơi lưu trữ kết quả hoạt động. Hoạt động cuối cùng được thực hiện. –

+1

Ok, anh chàng Python ở đây, hãy chịu với tôi xin vui lòng .. Không thể thêm véc tơ (có cùng chiều dài) với dấu '+'? Tôi sẽ cần phải làm một số nhà điều hành quá tải? – quapka

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