📅  最后修改于: 2023-12-03 14:39:54.559000             🧑  作者: Mango
在 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_size
行 col_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
方法,我们可以在运行时动态调整其大小。同时,双重循环可以用于遍历和访问二维向量中的元素。