建立一个名为Matrix的矩阵类,存储一个二维double数组,以及矩阵的行数、列数等。 b、通过运算符重载+,实现两个相同规格矩阵对象之间的的+运算,即矩阵C=A+B c、通过运算符重载<<,使得可以通过流运算符输出显示矩阵。例如cout<<C,显示矩阵C的数据
时间: 2024-05-01 12:22:35 浏览: 96
C++实现一个二维数组类
下面是实现Matrix类的代码:
```cpp
#include <iostream>
#include <vector>
class Matrix {
private:
std::vector<std::vector<double>> data; // 存储矩阵数据
int row, col; // 矩阵的行数和列数
public:
Matrix(int row, int col) : row(row), col(col) {
// 初始化矩阵数据为0
data.resize(row);
for (int i = 0; i < row; ++i) {
data[i].resize(col);
for (int j = 0; j < col; ++j) {
data[i][j] = 0;
}
}
}
// 重载+运算符
Matrix operator+(const Matrix& other) const {
if (row != other.row || col != other.col) {
std::cerr << "Error: matrix size mismatch!" << std::endl;
exit(1);
}
Matrix result(row, col);
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
result.data[i][j] = data[i][j] + other.data[i][j];
}
}
return result;
}
// 重载流输出运算符
friend std::ostream& operator<<(std::ostream& os, const Matrix& matrix) {
for (int i = 0; i < matrix.row; ++i) {
for (int j = 0; j < matrix.col; ++j) {
os << matrix.data[i][j] << " ";
}
os << std::endl;
}
return os;
}
};
int main() {
Matrix A(2, 3);
Matrix B(2, 3);
Matrix C = A + B;
std::cout << "A:" << std::endl << A << std::endl;
std::cout << "B:" << std::endl << B << std::endl;
std::cout << "C:" << std::endl << C << std::endl;
return 0;
}
```
上述代码中,我们首先定义了一个Matrix类,其中包含一个二维vector类型的data成员,表示矩阵的数据。另外,我们还定义了矩阵的行数和列数。
在类中重载了+运算符,实现了两个相同规格矩阵对象之间的+运算,并返回一个新的矩阵对象。如果两个矩阵的行数或列数不同,则输出错误信息并退出程序。
同时,我们还重载了流输出运算符<<,使得可以通过流运算符输出显示矩阵。在main函数中,我们创建了两个2x3的矩阵A和B,计算它们的和C,并将三个矩阵的数据输出到屏幕上。
以上就是实现Matrix类的代码,希望能够对你有所帮助。
阅读全文