1. 定义三维数组
在 C++ 中,三维数组可以看作是一个由多个二维数组组成的集合。其基本语法如下:
数据类型 数组名[维度1大小][维度2大小][维度3大小];
例如,定义一个 3x4x5 的整型三维数组:
int array3D[3][4][5];
这表示该数组具有三个维度,其中第一维有 3 个元素,第二维有 4 个元素,第三维有 5 个元素1。
2. 初始化三维数组
初始化三维数组可以通过大括号 {} 来完成。以下是几种常见的方式:
方式 1:完全初始化
通过嵌套的大括号指定每一层的数据。
int array3D[2][3][4] = {
{ // 第一层
{1, 2, 3, 4}, // 第二层的第一个子数组
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{ // 第二层
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};
方式 2:部分初始化
如果只提供部分初始值,则未赋值的部分会被自动设置为默认值(对于整数来说是 0)。
int array3D[2][3][4] = {
{{1, 2}, {5, 6}},
{}
};
// 上述代码中,array3D 的其他位置均为 0。
3. 遍历三维数组
通常使用嵌套的 for 循环来访问三维数组中的每一个元素。以下是一个完整的例子:
#include <iostream>
using namespace std;
int main() {
int array3D[2][3][4] = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};
for (int i = 0; i < 2; ++i) { // 外层循环控制第一维
for (int j = 0; j < 3; ++j) { // 中间层循环控制第二维
for (int k = 0; k < 4; ++k) { // 内层循环控制第三维
cout << "array3D[" << i << "][" << j << "][" << k << "] = "
<< array3D[i][j][k] << endl;
}
}
}
return 0;
}
上述程序会逐一遍历并打印出三维数组中的所有元素及其索引3。
4. 特性分析
存储方式:C++ 中的多维数组是以行优先顺序(Row-Major Order)存储在内存中的。这意味着在一维连续的空间里,先填充最右边的一维,再依次向左扩展。
内存分配:当声明一个固定大小的三维数组时,编译器会在栈上为其分配一块连续的内存区域。因此,在运行期间无法动态改变其尺寸。如果需要动态调整大小,应考虑使用指针或者标准库容器如 std::vector<std::vector<std::vector<int>>>2。
性能优化:由于多维数组涉及多次偏移计算,频繁操作可能会影响效率。建议尽可能减少不必要的复杂度,并合理设计算法逻辑以提升执行速度。