📜  C++ 中的二维向量对与示例(1)

📅  最后修改于: 2023-12-03 14:39:54.559000             🧑  作者: Mango

C++ 中的二维向量

在 C++ 中,二维向量是一种动态数组,可以在运行时根据需要调整大小。它由垂直方向的向量和水平方向的向量组成,通常用于存储网格图像、矩阵和其他二维数据。

示例

以下是一个简单的示例程序,演示如何在 C++ 中定义和使用二维向量:

#include <iostream>
#include <vector>

int main() {
    std::vector<std::vector<int>> matrix;  // 定义二维向量
    matrix.resize(3, std::vector<int>(4)); // 调整大小为 3 行 4 列

    // 初始化二维向量
    for (int i = 0; i < matrix.size(); i++) {
        for (int j = 0; j < matrix[0].size(); j++) {
            matrix[i][j] = i * j;
        }
    }

    // 遍历和输出二维向量
    for (int i = 0; i < matrix.size(); i++) {
        for (int j = 0; j < matrix[0].size(); j++) {
            std::cout << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

输出结果为:

0 0 0 0 
0 1 2 3 
0 2 4 6 
详解
定义二维向量

在 C++ 中,我们可以使用 std::vector 模板类来定义动态数组。对于二维数组,我们需要定义一个 std::vector 对象的向量,每个向量代表一个行,并且每行是一个具有固定大小的 std::vector 对象。因此,我们可以这样声明一个二维向量:

std::vector<std::vector<int>> matrix;

这里我们声明了一个名为 matrix 的二维向量,它的每一行都是一个类型为 std::vector<int> 的向量。

调整二维向量的大小

在声明二维向量之后,我们需要调整它的大小以适应我们要存储的数据。我们可以使用 resize 方法来调整大小。这个方法接受两个参数,分别是行数和列数:

matrix.resize(row_size, std::vector<int>(col_size));

在上面的代码中,我们将二维向量 matrix 调整为 row_sizecol_size 列。由于 std::vector<int>(col_size) 创建了一个具有 col_size 个元素的 std::vector 对象,因此 matrix 向量中的每一行都将包含 col_size 个元素。

访问和赋值二维向量

可以通过使用双重循环来遍历二维向量中的元素。内层循环按行遍历,外层循环按列遍历。在这个循环中,我们可以使用下标运算符 [] 来访问和赋值二维向量中的元素。

for (int i = 0; i < matrix.size(); i++) {
    for (int j = 0; j < matrix[0].size(); j++) {
        matrix[i][j] = i * j;
    }
}

在上面的代码中,我们使用双重循环初始化了二维向量,每个元素都被赋值为它所在的行和列数的乘积。

遍历和输出二维向量

类似于访问二维向量的方式,我们可以使用嵌套循环来遍历并输出二维向量中的所有元素。

for (int i = 0; i < matrix.size(); i++) {
    for (int j = 0; j < matrix[0].size(); j++) {
        std::cout << matrix[i][j] << " ";
    }
    std::cout << std::endl;
}

在上面的代码中,我们遍历 matrix 向量中的每个元素,并将它们输出到标准输出流中。

总结

在 C++ 中,二维向量是一种非常方便和灵活的数据结构,可以用于存储各种二维数据。通过调用 resize 方法,我们可以在运行时动态调整其大小。同时,双重循环可以用于遍历和访问二维向量中的元素。