C++ 知识量:19 - 82 - 316
C++中的多维数组是一种特殊的数组,它可以包含多个数组,每个数组可以包含多个元素。多维数组通常用于表示表格或矩阵等数据结构。
在C++中,多维数组的定义和初始化方式与一维数组类似,但需要在方括号中指定多个下标。例如,下面是一个包含3行4列的二维数组的例子:
int array2D[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} };
这个二维数组包含3个一维数组,每个一维数组都有4个整型元素。可以使用两个下标运算符访问数组中的元素,第一个下标运算符表示行数,第二个下标运算符表示列数。例如,要访问第一个元素,可以使用以下代码:
int firstElement = array2D[0][0];
如果要创建一个三维数组,可以继续嵌套一维数组。例如,创建一个2行3列2个一维数组的三维数组:
int array3D[2][3][2] = { { {0, 1}, {2, 3}, {4, 5} }, { {6, 7}, {8, 9}, {10, 11} } };
这个三维数组包含2个二维数组,每个二维数组都有3个一维数组,每个一维数组都有2个整型元素。可以使用三个下标运算符来访问数组中的元素,第一个下标运算符表示最外层数组的行数,第二个下标运算符表示中间层数组的列数,第三个下标运算符表示最内层数组的元素编号。例如,要访问第一个二维数组的第一个元素,可以使用以下代码:
int firstElement3D = array3D[0][0][0];
C++ 中的范围 for 循环(也称为基于范围的 for 循环)可以方便地遍历多维数组。在处理多维数组时,可以使用嵌套的基于范围的 for 循环来遍历每个元素。
下面是一个处理 3x3 的二维数组的例子:
#include <iostream> using namespace std; int main() { int arr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; // 使用嵌套的基于范围的 for 循环遍历二维数组 for (auto row : arr) { for (auto elem : row) { cout << elem << " "; } cout << endl; } return 0; }
这个程序首先定义了一个 3x3 的二维数组 arr,然后使用嵌套的基于范围的 for 循环遍历数组中的每个元素。外层循环遍历每一行,内层循环遍历每一行的元素。在循环体内,使用 cout 输出每个元素的值。
注意:在使用基于范围的 for 循环遍历二维数组时,row 和 elem 是从数组中直接获取的别名,它们分别代表二维数组的行和元素。这些别名是临时的,只在循环体内有效。在循环体外,不能使用这些别名来访问数组的元素。
因为多维数组在内存中是以线性数组的形式存储的,而指针可以用来访问这个线性数组中的元素。
对于一个m x n的多维数组,它可以被看作是一个长度为m * n的一维数组。数组中的每个元素都可以通过一个指向该元素的指针来访问。
例如,假设有一个3 x 4的整数数组arr,可以使用一个指向该数组首元素的指针来访问数组中的元素。这个指针可以定义为int *p = &arr[0][0],其中&arr[0][0]表示数组中第一个元素的地址。
通过这个指针,可以使用基于范围的for循环遍历整个数组,如下所示:
for (int *p = &arr[0][0]; p < &arr[3][4]; ++p) { cout << *p << " "; }
这个循环会输出整个数组中的元素,因为指针p从数组的第一个元素的地址开始,一直遍历到最后一个元素的地址。
需要注意的是,多维数组在内存中是连续存储的,因此可以使用指针来访问任意位置的元素。但是,由于多维数组的每一行可能包含不同的元素个数,因此不能简单地使用行和列索引来计算元素的地址。需要通过一些计算方法来计算元素的地址。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6