איך להשתמש בפונקציה std::accumulate כדי לחשב שורה במטריצה

שלום לכולם,
מישהו יודע אם אפשר להשתמש בפונקציה std::accumulate בשפת C++ כדי לחשב שורה או תור ספציפי במערך דו מימדי (מטריצה)?
אני יודע שבמערך חד מימדי זה אפשרי, אבל לא מצליח ליישם את זה על מערך דו מימדי.
תודה רבה על העזרה.

התבונן על התוכנית הבאה בשפת C++:

#include <iostream>  
#include <numeric>     
using namespace std; 
   
int arraySum(int a[], int n) { 
    int initial_sum  = 0;  
    return accumulate(a, a+n, initial_sum); 
} 
   
int main() { 
    int array[] = {5 , 10 , 15} ; 
    int length = sizeof(array)/sizeof(array[0]); 
    cout << "Array sum " << arraySum(array, length) << endl;

    int matrix[][3] = {{1,2,3},{4,5,6},{7,8,9}};
    for (int i = 0; i < 3; i++) {
        cout << "Sum of all elements in row " << i << " is " << arraySum(matrix[i],3) << endl;
    }
    return 0; 
} 

תחילה, הגדרתי פונקציה arraySum שמקבלת מערך וגודל המערך ומחזירה את סכום האיברים במערך בעזרת הפונקציה המבוקשת accumulate של הספריה std.
בפונקצית main הגדרנו מערך שמכיל שלושה איברים מטיפוס int והעברנו אותו (ואת גודלו) לפונקציה arraySum. בעקבות כך, הפלט הראשון יהיה:

Array sum 30

לאחר מכאן, הגדרנו מטריצה שמורכבת משלוש שורות כאשר כל שורה מכילה שלושה איברים.
יצרנו לולאה שרצה על השורות של המטריצה שמעבירה כל פעם את השורה (שהיא בעצם מערך) לפונקציה arraySum אשר מחשבת את סכום איבריה. סה"כ הפלט יהיה:

Sum of all elements in row 0 is 6
Sum of all elements in row 1 is 15
Sum of all elements in row 2 is 24

זאת כמובן רק דוגמה ואפשר גם להעביר לפונקציה שורה ספציפית של המטריצה ולקבל את סכום האיברים.
מקווה שמובן, בהצלחה :slight_smile: