用vector实现矩阵
时间: 2023-08-15 10:41:32 浏览: 64
在C++中,可以使用`vector`容器来实现矩阵。首先,我们可以定义一个二维的`vector`容器来表示矩阵,如下所示:
```c++
#include <vector>
using namespace std;
typedef vector<vector<double>> Matrix;
```
上述代码中,我们使用`typedef`关键字定义了一个新的类型`Matrix`,它是一个二维的`vector`容器,内部元素类型为`double`。
接下来,我们可以编写函数来创建矩阵、访问矩阵元素、矩阵加法、矩阵乘法等操作。例如,下面的代码实现了创建一个大小为`m x n`的矩阵,并将所有元素初始化为`val`:
```c++
Matrix createMatrix(int m, int n, double val) {
return Matrix(m, vector<double>(n, val));
}
```
下面的代码实现了访问矩阵中第`i`行第`j`列的元素:
```c++
double getElement(const Matrix& mat, int i, int j) {
return mat[i][j];
}
```
下面的代码实现了矩阵加法:
```c++
Matrix add(const Matrix& mat1, const Matrix& mat2) {
int m = mat1.size();
int n = mat1[0].size();
Matrix res = createMatrix(m, n, 0.0);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
res[i][j] = mat1[i][j] + mat2[i][j];
}
}
return res;
}
```
下面的代码实现了矩阵乘法:
```c++
Matrix multiply(const Matrix& mat1, const Matrix& mat2) {
int m = mat1.size();
int n = mat1[0].size();
int p = mat2[0].size();
Matrix res = createMatrix(m, p, 0.0);
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
for (int k = 0; k < n; k++) {
res[i][j] += mat1[i][k] * mat2[k][j];
}
}
}
return res;
}
```
使用上述函数,我们就可以方便地对矩阵进行各种操作了。
阅读全文