原文: https://www.programiz.com/cpp-programming/multidimensional-arrays

在本教程中,我们将学习 C++ 中的多维数组。 更具体地说,如何在我们的程序中声明它们,访问它们以及有效使用它们。

在 C++ 中,我们可以创建数组的数组,称为多维数组。 例如:

  1. int x[3][4];

在此,×是二维数组。 它最多可容纳 12 个元素。

我们可以将此数组视为具有 3 行的表,每行有 4 列,如下所示。

C   多维数组 - 图1

C++ 编程中的二维数组中的元素

三维数组也以类似的方式工作。 例如:

  1. float x[2][4][3];

此数组x最多可容纳 24 个元素。

我们可以简单地乘以数组的维数来找出数组中元素的总数:

  1. 2 x 4 x 3 = 24

多维数组初始化

像普通数组一样,我们可以通过多种方式初始化多维数组。

1.二维数组的初始化

  1. int test[2][3] = {2, 4, 5, 9, 0, 19};

上述方法不是优选的。 下面给出了使用相同的数组元素初始化此数组的更好方法:

  1. int test[2][3] = { {2, 4, 5}, {9, 0, 19}};

该数组有 2 行 3 列,这就是为什么我们有两行元素,每行 3 个元素的原因。

C   多维数组 - 图2

在 C++ 中初始化二维数组


2.三维数组的初始化

  1. int test[2][3][4] = {3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23,
  2. 2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9};

这不是初始化三维数组的好方法。 初始化此数组的更好方法是:

  1. int test[2][3][4] = {
  2. { {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} },
  3. { {13, 4, 56, 3}, {5, 9, 3, 5}, {3, 1, 4, 9} }
  4. };

示例 1:二维数组

  1. // C++ Program to display all elements
  2. // of an initialised two dimensional array
  3. #include <iostream>
  4. using namespace std;
  5. int main() {
  6. int test[3][2] = {{2, -5},
  7. {4, 0},
  8. {9, 1}};
  9. // use of nested for loop
  10. // access rows of the array
  11. for (int i = 0; i < 3; ++i) {
  12. // access columns of the array
  13. for (int j = 0; j < 2; ++j) {
  14. cout << "test[" << i << "][" << j << "] = " << test[i][j] << endl;
  15. }
  16. }
  17. return 0;
  18. }

输出

  1. test[0][0] = 2
  2. test[0][1] = -5
  3. test[1][0] = 4
  4. test[1][1] = 0
  5. test[2][0] = 9
  6. test[2][1] = 1

在上面的示例中,我们初始化了一个名为test的二维int数组,该数组具有 3 个“行”和 2 个“列”。

在这里,我们使用了嵌套的for循环来显示数组元素。

  • i = 0i = 2的外部循环访问数组的行
  • j = 0j = 1的内部循环访问数组的列

最后,我们在每次迭代中打印数组元素。


示例 2:获取二维数组的输入

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. int numbers[2][3];
  5. cout << "Enter 6 numbers: " << endl;
  6. // Storing user input in the array
  7. for (int i = 0; i < 2; ++i) {
  8. for (int j = 0; j < 3; ++j) {
  9. cin >> numbers[i][j];
  10. }
  11. }
  12. cout << "The numbers are: " << endl;
  13. // Printing array elements
  14. for (int i = 0; i < 2; ++i) {
  15. for (int j = 0; j < 3; ++j) {
  16. cout << "numbers[" << i << "][" << j << "]: " << numbers[i][j] << endl;
  17. }
  18. }
  19. return 0;
  20. }

输出

  1. Enter 6 numbers:
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. The numbers are:
  9. numbers[0][0]: 1
  10. numbers[0][1]: 2
  11. numbers[0][2]: 3
  12. numbers[1][0]: 4
  13. numbers[1][1]: 5
  14. numbers[1][2]: 6

在这里,我们使用了嵌套的for循环来获取 2d 数组的输入。 取完所有输入后,我们使用了另一个嵌套的for循环来打印数组成员。


示例 3:三维数组

  1. // C++ Program to Store value entered by user in
  2. // three dimensional array and display it.
  3. #include <iostream>
  4. using namespace std;
  5. int main() {
  6. // This array can store upto 12 elements (2x3x2)
  7. int test[2][3][2] = {
  8. {
  9. {1, 2},
  10. {3, 4},
  11. {5, 6}
  12. },
  13. {
  14. {7, 8},
  15. {9, 10},
  16. {11, 12}
  17. }
  18. };
  19. // Displaying the values with proper index.
  20. for (int i = 0; i < 2; ++i) {
  21. for (int j = 0; j < 3; ++j) {
  22. for (int k = 0; k < 2; ++k) {
  23. cout << "test[" << i << "][" << j << "][" << k << "] = " << test[i][j][k] << endl;
  24. }
  25. }
  26. }
  27. return 0;
  28. }

输出

  1. test[0][0][0] = 1
  2. test[0][0][1] = 2
  3. test[0][1][0] = 3
  4. test[0][1][1] = 4
  5. test[0][2][0] = 5
  6. test[0][2][1] = 6
  7. test[1][0][0] = 7
  8. test[1][0][1] = 8
  9. test[1][1][0] = 9
  10. test[1][1][1] = 10
  11. test[1][2][0] = 11
  12. test[1][2][1] = 12

3d 数组的打印元素的基本概念类似于 2d 数组的打印概念。

但是,由于我们要处理 3 个维度,因此我们使用了一个嵌套的for循环,其中包含 3 个循环,而不仅仅是 2 个循环。

如我们所见,数组的复杂度随尺寸的增加而呈指数增长。