问题:为什么二维数组要转化为一维数组(一维数组连续存储,利用CPU Cache)
Matrix就是相当于连续内存空间(一维数组), 最好初始化
对于行优先存储矩阵,我们用指针数组,每个指针指向该行的首地址,然后在原来线性的内存上操作。剩下的就不难实现。
同时该类实现使用到智能指针Unique_Point来管理矩阵。
#pragma once
#include <memory>
namespace bustub {
/*
* The base class defining a Matrix
*/
template <typename T>
class Matrix {
protected:
Matrix(int r, int c):rows(r),cols(c) {
linear = new T[rows*cols];
memset(linear,0,sizeof(T)*rows*cols);
}
// # of rows in the matrix
int rows;
// # of Columns in the matrix
int cols;
// Flattened array containing the elements of the matrix
// the array in the destructor.
T *linear;
public:
// Return the # of rows in the matrix
virtual int GetRows() = 0;
// Return the # of columns in the matrix
virtual int GetColumns() = 0;
// Return the (i,j)th matrix element
virtual T GetElem(int i, int j) = 0;
// Sets