📜  使用向量 c++ 的矩阵大小(1)

📅  最后修改于: 2023-12-03 15:22:23.037000             🧑  作者: Mango

使用向量 C++ 的矩阵大小

在 C++ 中,向量(vector)是一种可变大小的容器,可以根据需要动态增加或减小容器的大小。在处理矩阵时,我们可以使用向量来存储矩阵的行或列。

定义矩阵

我们可以使用一个向量的向量来定义一个矩阵。例如,以下的代码定义了一个 3x3 的矩阵:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<vector<int>> matrix = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    
    // 输出矩阵
    for (int i = 0; i < matrix.size(); i++) {
        for (int j = 0; j < matrix[0].size(); j++) {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }
    
    return 0;
}

输出结果:

1 2 3
4 5 6
7 8 9
矩阵大小

我们可以使用向量的 size() 函数来获取矩阵的行数和列数。例如:

int row = matrix.size(); // 行数
int col = matrix[0].size(); // 列数
矩阵相乘

两个矩阵相乘时,左边矩阵的列数必须等于右边矩阵的行数。因此,在实现矩阵相乘时,我们需要使用向量的 resize() 函数来设置结果矩阵的大小,然后使用嵌套的循环来进行计算。

以下是一个计算两个矩阵相乘的示例:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<vector<int>> matrix1 = {
        {1, 2},
        {3, 4},
        {5, 6}
    };
    
    vector<vector<int>> matrix2 = {
        {1, 2, 3},
        {4, 5, 6}
    };
    
    int row1 = matrix1.size();
    int col1 = matrix1[0].size();
    int row2 = matrix2.size();
    int col2 = matrix2[0].size();
    
    // 创建结果矩阵
    vector<vector<int>> result(row1, vector<int>(col2));
    
    // 计算矩阵相乘
    for (int i = 0; i < row1; i++) {
        for (int j = 0; j < col2; j++) {
            for (int k = 0; k < col1; k++) {
                result[i][j] += matrix1[i][k] * matrix2[k][j];
            }
        }
    }
    
    // 输出结果矩阵
    for (int i = 0; i < row1; i++) {
        for (int j = 0; j < col2; j++) {
            cout << result[i][j] << " ";
        }
        cout << endl;
    }
    
    return 0;
}

输出结果:

9 12 15
19 26 33
29 40 51
总结

在处理矩阵时,使用向量可以方便地存储矩阵的行或列,并且可以使用向量的各种函数方便地获取矩阵的大小和进行计算。