将矩阵类改为类模板。 设计矩阵类(m×n); a) 实现指定 m ,n 参数的函数(要分配数组空间) b) 实现按位置(row,col)赋值函数。 c) 实现求转置函数 Transpose(); Transpose就是行列对换
时间: 2023-06-16 08:03:09 浏览: 80
以下是矩阵类模板的实现:
```c++
template <typename T>
class Matrix {
private:
int m_rows;
int m_cols;
T* m_data;
public:
// 构造函数
Matrix(int rows, int cols) : m_rows(rows), m_cols(cols) {
m_data = new T[m_rows * m_cols];
}
// 析构函数
~Matrix() {
delete[] m_data;
}
// 按位置赋值
void set(int row, int col, T value) {
m_data[row * m_cols + col] = value;
}
// 求转置
Matrix<T> Transpose() const {
Matrix<T> transposed(m_cols, m_rows);
for (int i = 0; i < m_rows; i++) {
for (int j = 0; j < m_cols; j++) {
transposed.set(j, i, m_data[i * m_cols + j]);
}
}
return transposed;
}
};
```
使用示例:
```c++
Matrix<int> mat(3, 2);
mat.set(0, 0, 1);
mat.set(0, 1, 2);
mat.set(1, 0, 3);
mat.set(1, 1, 4);
mat.set(2, 0, 5);
mat.set(2, 1, 6);
Matrix<int> transposed = mat.Transpose();
```
这个示例创建了一个 3 行 2 列的矩阵,并按位置赋值。然后调用 Transpose() 函数求转置,得到一个 2 行 3 列的矩阵。
阅读全文