c++矩阵类用一维数组存储矩阵元素实现矩阵的转置
时间: 2023-08-02 19:07:49 浏览: 123
可以通过将二维数组展开成一维数组,然后利用下标计算实现矩阵的转置,代码如下:
```c++
class Matrix {
private:
int rows, cols;
int *data; // 一维数组存储矩阵元素
public:
// 构造函数和析构函数
Matrix(int r, int c) : rows(r), cols(c) {
data = new int[rows * cols];
}
~Matrix() {
delete[] data;
}
// 计算一维数组下标
int index(int r, int c) {
return r * cols + c;
}
// 重载运算符
Matrix operator~() {
Matrix trans(cols, rows); // 新建一个转置矩阵
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
trans.data[trans.index(j, i)] = data[index(i, j)]; // 转置
return trans;
}
};
```
其中,`index`方法计算一维数组下标,用法如下:
```c++
Matrix m1(3, 2);
// 初始化矩阵元素
Matrix m2 = ~m1; // 转置矩阵
```
阅读全文