一、定义和初始化二维数组
C++中创建一个二维数组需要指定行和列,可以用下面的语法来定义一个二维数组:
int arr[row][col];
其中,row
和col
都为整数类型的变量,分别表示二维数组的行数和列数。
初始化二维数组可以通过下面的语法实现:
int arr[row][col] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
其中,二维数组的元素按照行优先顺序排列,用双括号来表示数组的行和列。上面的代码表示创建了一个3行3列的二维数组,并把它初始化为1到9的递增序列。
二、读写数组元素
读取二维数组元素时需要指定元素的行和列,可以用下面的语法实现:
int val = arr[row][col];
其中,row
和col
分别表示所要读取元素的行和列,val
为数组元素的值。
赋值二维数组元素时也需要指定元素的行和列,可以用下面的语法实现:
arr[row][col] = val;
其中,row
和col
分别表示所要赋值元素的行和列,val
为要赋的值。
三、使用循环输出数组
C++中可以使用嵌套循环遍历二维数组,并输出其中的元素值。下面是一个示例代码:
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
上面的代码中,外层循环控制二维数组的行数,内层循环控制每行的列数。在循环体中,通过cout
语句输出每个元素的值,用空格隔开,输出完每行后再使用endl
换行符切换到下一行输出。
示例代码
下面是一个使用二维数组实现迷宫问题的代码示例:
#include <iostream>
using namespace std;
const int row = 6, col = 6;
int maze[row][col] = {
{0, 0, 0, 0, 0, 0},
{0, 1, 0, 1, 1, 0},
{0, 0, 0, 0, 0, 0},
{0, 1, 0, 1, 0, 1},
{0, 1, 0, 0, 0, 1},
{0, 0, 0, 1, 0, 0}
};
bool is_valid(int x, int y) {
if (x >= 0 && x < row && y >=0 && y < col && maze[x][y] == 0) {
return true;
}
else {
return false;
}
}
bool maze_path(int x, int y) {
if (x == row - 1 && y == col - 1) {
maze[x][y] = 2;
return true;
}
else {
if (is_valid(x, y)) {
maze[x][y] = 2;
if (maze_path(x-1, y) || maze_path(x, y+1) || maze_path(x+1, y) || maze_path(x, y-1)) {
return true;
}
maze[x][y] = 0;
}
return false;
}
}
int main() {
maze_path(1, 0);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << maze[i][j] << " ";
}
cout << endl;
}
return 0;
}
小结
二维数组是C++中常用的数据结构之一,可以用于表示矩阵、图等复杂数据结构。创建和操作二维数组需要了解其基本语法和用法。C++提供了灵活的数组定义方式,可以使用简单的语法来创建多维数组。在操作二维数组时,需要注意指定元素的行和列,利用嵌套循环遍历二维数组,并可以实现各种算法和应用。