Многомерные массивы C ++ (2-й и 3-й массивы)

В этом руководстве мы узнаем о многомерных массивах в C ++. В частности, как их объявить, получить к ним доступ и эффективно использовать в нашей программе.

В C ++ мы можем создать массив из массива, известный как многомерный массив. Например:

 int x(3)(4);

Здесь x - двумерный массив. Он может вместить максимум 12 элементов.

Мы можем представить этот массив как таблицу с 3 строками, каждая из которых имеет 4 столбца, как показано ниже.

Элементы двумерного массива в программировании на C ++

Аналогичным образом работают и трехмерные массивы. Например:

 float x(2)(4)(3);

Этот массив x может содержать максимум 24 элемента.

Мы можем узнать общее количество элементов в массиве, просто умножив его размеры:

 2 x 4 x 3 = 24

Инициализация многомерного массива

Как и обычный массив, мы можем инициализировать многомерный массив более чем одним способом.

1. Инициализация двумерного массива

 int test(2)(3) = (2, 4, 5, 9, 0, 19);

Вышеуказанный метод не является предпочтительным. Ниже приведен лучший способ инициализировать этот массив теми же элементами массива:

 int test(2)(3) = ( (2, 4, 5), (9, 0, 19));

В этом массиве 2 строки и 3 столбца, поэтому у нас есть две строки элементов по 3 элемента в каждой.

Инициализация двумерного массива в C ++

2. Инициализация трехмерного массива

 int test(2)(3)(4) = (3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23, 2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9);

Это не лучший способ инициализации трехмерного массива. Лучший способ инициализировать этот массив:

 int test(2)(3)(4) = ( ( (3, 4, 2, 3), (0, -3, 9, 11), (23, 12, 23, 2) ), ( (13, 4, 56, 3), (5, 9, 3, 5), (5, 1, 4, 9) ) );

Обратите внимание на размеры этого трехмерного массива.

Первое измерение имеет значение 2. Итак, два элемента, составляющие первое измерение:

 Элемент 1 = ((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)) 

Второе измерение имеет значение 3. Обратите внимание, что каждый из элементов первого измерения состоит из трех элементов:

 (3, 4, 2, 3), (0, -3, 9, 11) и (23, 12, 23, 2) для Элемента 1. (13, 4, 56, 3), (5, 9, 3) , 5) и (5, 1, 4, 9) для Элемента 2.

Наконец, intвнутри каждого элемента второго измерения есть четыре числа:

 (3, 4, 2, 3) (0, -3, 9, 11)…… 

Пример 1: Двумерный массив

 // C++ Program to display all elements // of an initialised two dimensional array #include using namespace std; int main() ( int test(3)(2) = ((2, -5), (4, 0), (9, 1)); // use of nested for loop // access rows of the array for (int i = 0; i < 3; ++i) ( // access columns of the array for (int j = 0; j < 2; ++j) ( cout << "test(" << i << ")(" << j << ") = " << test(i)(j) << endl; ) ) return 0; )

Вывод

 test (0) (0) = 2 test (0) (1) = -5 test (1) (0) = 4 test (1) (1) = 0 test (2) (0) = 9 test (2) (1) = 1

В приведенном выше примере мы инициализировали двумерный intмассив с именем test, который имеет 3 «строки» и 2 «столбца».

Здесь мы использовали вложенный forцикл для отображения элементов массива.

  • внешний цикл from i == 0для i == 2доступа к строкам массива
  • внутренний цикл from j == 0для j == 1доступа к столбцам массива

Наконец, мы печатаем элементы массива на каждой итерации.

Пример 2: ввод данных для двумерного массива

 #include using namespace std; int main() ( int numbers(2)(3); cout << "Enter 6 numbers: " << endl; // Storing user input in the array for (int i = 0; i < 2; ++i) ( for (int j = 0; j > numbers(i)(j); ) ) cout << "The numbers are: " << endl; // Printing array elements for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( cout << "numbers(" << i << ")(" << j << "): " << numbers(i)(j) << endl; ) ) return 0; )

Вывод

 Введите 6 чисел: 1 2 3 4 5 6 Цифры: числа (0) (0): 1 числа (0) (1): 2 числа (0) (2): 3 числа (1) (0): 4 номера (1) (1): 5 номера (1) (2): 6

Здесь мы использовали вложенный forцикл для ввода 2d-массива. После того, как все входные данные были приняты, мы использовали другой вложенный forцикл для печати элементов массива.

Пример 3: трехмерный массив

 // C++ Program to Store value entered by user in // three dimensional array and display it. #include using namespace std; int main() ( // This array can store upto 12 elements (2x3x2) int test(2)(3)(2) = ( ( (1, 2), (3, 4), (5, 6) ), ( (7, 8), (9, 10), (11, 12) ) ); // Displaying the values with proper index. for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( for (int k = 0; k < 2; ++k) ( cout << "test(" << i << ")(" << j << ")(" << k << ") = " << test(i)(j)(k) << endl; ) ) ) return 0; )

Вывод

 тест (0) (0) (0) = 1 тест (0) (0) (1) = 2 тест (0) (1) (0) = 3 тест (0) (1) (1) = 4 тест ( 0) (2) (0) = 5 тестов (0) (2) (1) = 6 тестов (1) (0) (0) = 7 тестов (1) (0) (1) = 8 тестов (1) (1) (0) = 9 тестов (1) (1) (1) = 10 тестов (1) (2) (0) = 11 тестов (1) (2) (1) = 12

Основная концепция печати элементов трехмерного массива аналогична концепции двухмерного массива.

Однако, поскольку мы манипулируем 3-мя измерениями, мы используем вложенный цикл for с 3 полными циклами вместо двух:

  • внешний цикл от i == 0до i == 1обращается к первому измерению массива
  • средний цикл от j == 0до j == 2обращается ко второму измерению массива
  • самый внутренний цикл от k == 0до k == 1обращается к третьему измерению массива

Как видим, сложность массива экспоненциально возрастает с увеличением размеров.

Интересные статьи...