Багатовимірні масиви 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; )

Вихідні дані

 тест (0) (0) = 2 тест (0) (1) = -5 тест (1) (0) = 4 тест (1) (1) = 0 тест (2) (0) = 9 тест (2) (1) = 1

У наведеному вище прикладі ми ініціалізували двовимірний intмасив з іменем test, який має 3 "рядки" і 2 "стовпці".

Тут ми використали вкладений forцикл для відображення елементів масиву.

  • зовнішній цикл від i == 0для i == 2доступу до рядків масиву
  • внутрішній цикл від 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

Основна концепція друку елементів 3D-масиву подібна до концепції 2D-масиву.

Однак, оскільки ми маніпулюємо 3 вимірами, ми використовуємо вкладений цикл for із 3 загальними циклами, а не лише 2:

  • зовнішній цикл від i == 0до i == 1отримує доступ до першого виміру масиву
  • середній цикл від j == 0до j == 2отримує доступ до другого виміру масиву
  • внутрішній цикл від k == 0до k == 1отримує доступ до третього виміру масиву

Як бачимо, складність масиву зростає експоненціально із збільшенням розмірів.

Цікаві статті...