สมมติว่าเรามีเมทริกซ์สองตัวคือ mat1 และ mat2 เราจะต้องบวกเมทริกซ์สองตัวนี้และสร้างเมทริกซ์ที่สาม เราจะต้องทำสิ่งนี้โดยการโอเวอร์โหลดโอเปอเรเตอร์เพิ่มเติม
ดังนั้นหากอินพุตเป็นแบบ
5 | 8 |
9 | 6 |
7 | 9 |
8 | 3 |
4 | 7 |
6 | 3 |
แล้วผลลัพธ์ที่ได้จะเป็น
13 | 11 |
13 | 13 |
13 | 12 |
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
โอเวอร์โหลดโอเปอเรเตอร์การบวก ซึ่งจะใช้เมทริกซ์แมทอื่นเป็นอาร์กิวเมนต์ที่สอง
-
กำหนดอาร์เรย์ 2d ว่างหนึ่ง vv
-
กำหนดอาร์เรย์ 2 มิติ vv และโหลดองค์ประกอบเมทริกซ์ปัจจุบันเข้าไป
-
สำหรับการเริ่มต้น i :=0 เมื่อ i <ขนาด vv ให้อัปเดต (เพิ่ม i ขึ้น 1) ให้ทำ:
-
สำหรับการเริ่มต้น j :=0 เมื่อ j
- vv[i, j] :=vv[i, j] + mat.a[i, j]
-
- คืนค่าเมทริกซ์ใหม่โดยใช้ vv
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
#include#include ใช้เนมสเปซ std;คลาสเมทริกซ์ { สาธารณะ:เมทริกซ์ () {} เมทริกซ์ (const Matrix&x) :a(x.a) {} เมทริกซ์ (const vector > &v) :a(v) {} เมทริกซ์โอเปอเรเตอร์+(const Matrix&); เวกเตอร์<เวกเตอร์ > a; โมฆะ display(){ for(int i =0; i > vv =a; สำหรับ (int i=0; i > mat1 ={{5,8},{9,6},{7,9}}; เวกเตอร์<เวกเตอร์ > mat2 ={{8,3},{4,7},{6,3}}; int r =mat1.size(); int c =mat1[0].size(); เมทริกซ์ m1(mat1), m2(mat2), res; ความละเอียด =m1 + m2; res.display();}
อินพุต
<ก่อน>{{5,8},{9,6},{7,9}}, {{8,3},{4,7},{6,3}}ผลลัพธ์
13 1113 1313 12