diff --git a/modules/13_cpp23/src/mdspan.cpp b/modules/13_cpp23/src/mdspan.cpp index a236620..e099e17 100644 --- a/modules/13_cpp23/src/mdspan.cpp +++ b/modules/13_cpp23/src/mdspan.cpp @@ -2,23 +2,22 @@ namespace cpp23 { -auto make_row_major_matrix(int rows, int cols, int fill) -> std::vector { - (void)rows; (void)cols; (void)fill; - return {}; +auto make_row_major_matrix(const int rows, const int cols, const int fill) -> std::vector { + return std::vector(static_cast(rows * cols), fill); } -auto matrix_element( - std::mdspan> matrix, - int row, int col) -> int { - (void)matrix; (void)row; (void)col; - return 0; +auto matrix_element(const std::mdspan> matrix, const int row, const int col) -> int { + return matrix[row, col]; } -auto row_sums( - std::mdspan> matrix) - -> std::vector { - (void)matrix; - return {}; +auto row_sums(const std::mdspan> matrix) -> std::vector { + auto sums = std::vector(matrix.extent(0)); + for (auto i = 0; i < matrix.extent(0); ++i) { + for (auto j = 0; j < matrix.extent(1); ++j) { + sums[i] += matrix[i, j]; + } + } + return sums; } } // namespace cpp23