什么是二维数组
二维数组,也称为矩阵,是指由多个一维数组组成的数组,每个一维数组又是由多个元素组成的数组。
与一维数组不同的是,二维数组由行和列组成,表示为一个矩阵。我们可以使用行和列的下标来访问二维数组中的元素。以下是一个常见的二维数组的例子:
int arr[3][4] =
{
{0, 1, 2, 3} , // 初始化第 1 行元素
{4, 5, 6, 7} , // 初始化第 2 行元素
{8, 9, 10, 11} // 初始化第 3 行元素
};
定义二维数组
方法一:指定行和列的大小
我们可以通过指定行和列的大小来定义一个二维数组。下面是一个例子:
int arr[3][4];
上面的例子定义了一个3行4列的二维数组,在定义时不需要给出初始值。
方法二:初始化二维数组
我们也可以在定义二维数组时同时对其进行初始化,例如:
int arr[3][4] =
{
{0, 1, 2, 3} ,
{4, 5, 6, 7} ,
{8, 9, 10, 11}
};
上面的例子中,我们使用了花括号来初始化数组的所有元素,先给出了第一行的元素,紧接着是第二行的元素,最后是第三行的元素。
方法三:动态分配空间
我们也可以使用动态内存分配的方式来定义二维数组,在大量数据处理时经常会使用这种方法,例如:
int** arr;
arr = new int*[3];
for(int i = 0; i < 3; ++i)
arr[i] = new int[4];
上面的例子中,我们先定义一个指向指针的指针arr,然后使用new运算符动态分配arr的行空间(new int*[3]),再分配每行的列空间(new int[4])。
在使用完二维数组后,我们还需要使用delete运算符释放空间,例如:
for(int i = 0; i < 3; ++i)
delete [] arr[i];
delete [] arr;
二维数组的访问
在二维数组中,我们可以使用两个下标来访问数组中的元素,第一个下标表示访问的是哪一行,第二个下标表示访问的是该行中的哪个元素,例如:
int arr[3][4] =
{
{0, 1, 2, 3} ,
{4, 5, 6, 7} ,
{8, 9, 10, 11}
};
for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 4; ++j)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
通过上面的代码,我们可以输出数组中的所有元素。
二维数组的应用
二维数组在实际开发中经常用到,以下是一些常见的应用场景:
表示表格数据
我们可以将二维数组用于表示表格数据,例如一个学生成绩表。下面是一个例子:
string names[] = { "Tom", "Jerry", "Linda", "Amy" };
double scores[][3] = {
{ 80.5, 90.0, 91.5 },
{ 91.0, 88.0, 92.5 },
{ 85.5, 86.5, 84.0 },
{ 93.5, 95.0, 94.5 }
};
for (int i = 0; i < 4; ++i)
{
cout << names[i] << "的成绩:";
for (int j = 0; j < 3; ++j)
{
cout << scores[i][j] << " ";
}
cout << endl;
}
上面的例子中,我们使用了一个一维数组存储学生姓名,另一个二维数组存储每个学生的三科成绩,从而得到学生成绩表。
表示图像数据
图像数据通常是一个二维的矩阵,我们可以使用二维数组来表示图像数据。
下面是一个示例代码:
int image[256][256];
for (int i = 0; i < 256; ++i)
{
for (int j = 0; j < 256; ++j)
{
image[i][j] = i * j / 256;
}
}
上面的代码中,我们生成了一个灰度图像,像素值由行和列下标计算得到。
表示迷宫地图
迷宫地图通常也是一个二维的矩阵,我们可以使用二维数组来表示迷宫地图。
下面是一个示例代码:
const int N = 5;
int map[N][N] = {
{ 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 1, 0, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1 }
};
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
{
if (map[i][j] == 1)
cout << "#";
else
cout << ".";
}
cout << endl;
}
上面的代码中,我们用1表示迷宫的障碍物,用0表示空地,然后输出整个迷宫地图。
结语
本文介绍了二维数组的定义、访问和应用,希望对读者理解和使用二维数组有所帮助。