C++如何进行矩阵计算
时间: 2024-11-22 19:47:45 浏览: 21
在C++中进行矩阵计算,你可以使用标准库中的`std::vector`容器来表示矩阵的行和列,然后定义相应的操作函数如加法、减法、乘法等。这里提供一个简单的例子,展示了如何创建矩阵、元素访问以及基本的矩阵运算:
```cpp
#include <iostream>
#include <vector>
// 定义矩阵类 Matrix
class Matrix {
private:
std::vector<std::vector<int>> data; // 存储矩阵数据
int rows, cols; // 行数和列数
public:
// 构造函数
Matrix(int r, int c) : rows(r), cols(c) { // 初始化为全0矩阵
data.resize(rows, std::vector<int>(cols, 0));
}
// 访问元素
int& operator()(int row, int col) {
return data[row][col];
}
// 输出矩阵
void print() const {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
std::cout << data[i][j] << " ";
}
std::cout << "\n";
}
}
// 加法
friend Matrix operator+(const Matrix& a, const Matrix& b) {
if (a.cols != b.cols || a.rows != b.rows)
throw std::invalid_argument("Matrices must have the same dimensions");
Matrix result(a.rows, a.cols);
for (int i = 0; i < a.rows; ++i) {
for (int j = 0; j < a.cols; ++j) {
result(i, j) = a(i, j) + b(i, j);
}
}
return result;
}
};
int main() {
Matrix A(3, 3), B(3, 3);
A.print(); // 填充A矩阵
B.print(); // 填充B矩阵
Matrix C = A + B; // 矩阵相加
C.print();
return 0;
}
```
这个示例演示了如何创建矩阵、打印矩阵、执行矩阵加法。对于更复杂的矩阵运算,如矩阵乘法或使用更高效的线性代数库(如Eigen或armadillo),你需要扩展上述基础结构并实现相应的方法。
阅读全文