Масив — це тип структури даних, який використовується для зберігання колекції елементів одного типу даних, що зберігаються в безперервних розташуваннях пам’яті. Масиви можуть бути одновимірними або багатовимірними залежно від кількості напрямків, у яких масив може рости. У цій статті ми вивчатимемо багатовимірні масиви, такі як двовимірні масиви та тривимірні масиви.
Що таке багатовимірний масив у C++?
Багатовимірний масив — це масив із більш ніж одним виміром. Це однорідна колекція елементів, де доступ до кожного елемента здійснюється за допомогою кількох індексів.
Оголошення багатовимірного масиву
datatype arrayName [ size1][size2]...[sizeN];>
де,
- тип даних: Тип даних, які будуть зберігатися в масиві.
- ім'я масиву: Назва масиву.
- розмір1, розмір2,…, розмірN: Розмір кожного виміру.
приклад:
Two dimensional array: int two_d[2][4]; Three dimensional array: int three_d[2][4][8];>
Розмір багатовимірного масиву
Розмір масиву дорівнює розміру типу даних, помноженому на загальну кількість елементів, які можуть зберігатися в масиві. Ми можемо обчислити загальну кількість елементів у масиві, помноживши розмір кожного виміру багатовимірного масиву.
Наприклад:
int arr1[2][4];>
- Масив int обр1[2][4] може зберігати всього (2*4) = 8 елементів.
- У C++ тип даних int займає 4 байти, і ми маємо 8 елементів у масиві 'arr1' типу int.
- Загальний розмір = 4*8 = 32 байти .
int arr2[2][4][8];>
- Масив int приб.2[2][4][8] може зберігати всього (2*4*8) = 64 елементи.
- Загальний розмір ' обр2 ' = 64*4 = 256 байт .
Для перевірки наведеного вище розрахунку ми можемо використовувати sizeof() метод визначення розміру масиву.
C++
// C++ program to verify the size of multidimensional> // arrays> #include> using> namespace> std;> > int> main()> {> >// creating 2d and 3d array> >int> arr1[2][4];> >int> arr2[2][4][8];> > >// using sizeof() operator to get the size of the above> >// arrays> >cout <<>'Size of array arr1: '> <<>sizeof>(arr1)> ><<>' bytes'> << endl;> >cout <<>'Size of array arr2: '> <<>sizeof>(arr2)> ><<>' bytes'>;> > >return> 0;> }> |
>
Анкіта Дейв
>Вихід
Size of array arr1: 32 bytes Size of array arr2: 256 bytes>
Найбільш широко використовувані багатовимірні масиви:
- Двовимірний масив
- Тривимірний масив
Двовимірний масив (або 2D масив)
Двовимірний масив у C++ — це набір елементів, організованих у рядки та стовпці. Його можна візуалізувати у вигляді таблиці або сітки, де доступ до кожного елемента здійснюється за допомогою двох індексів: одного для рядка та одного для стовпця. Подібно до одновимірного масиву, індекси двовимірного масиву також варіюються від 0 до n-1 як для рядків, так і для стовпців.

Синтаксис 2D масиву
data_Type array_name[ п ][ м ];
Де,
- n: Кількість рядів.
- м: Кількість колон.
Ми можемо оголосити 2D-масив статично та динамічно. У статичній декларації пам’ять виділяється під час компіляції, а в динамічній – під час виконання. Вище наведено синтаксис для статичного оголошення 2D-масиву. Щоб дізнатися, як динамічно оголосити 2d-масив, зверніться до це стаття.
Ініціалізація двовимірних масивів у C++
Нижче наведено різні способи ініціалізації 2D-масиву:
рядок конвертера на дату
- Використання списку ініціалізаторів
- Використання циклів
1. Ініціалізуйте 2D-масив за допомогою списку Initializer
Ми можемо ініціалізувати 2D-масив за допомогою списку ініціалізаторів двома способами. Нижче наведено перший метод ініціалізації 2D-масиву за допомогою списку ініціалізаторів.
Перший спосіб: Наведений нижче масив складається з 2 рядків і 4 стовпців. Елементи заповнюються таким чином, що перші 4 елементи заповнюються в першому рядку, а наступні 4 елементи заповнюються в другому рядку.
int arr[2][4] = {0, 1, 2, 3, 4, 5, 6, 7};> Другий спосіб: Наведений нижче спосіб є простішим способом ініціалізації 2D-масиву: вкладений список представляє елементи в рядку, а кількість елементів у ньому дорівнює кількості стовпців у 2D-масиві. Кількість вкладених списків відповідає кількості стовпців.
int x[2][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}};> 2. Ініціалізація 2D масиву за допомогою циклів
Ми також можемо ініціалізувати 2D-масив за допомогою циклів. Щоб ініціалізувати 2D-масив, ми повинні використовувати два вкладені цикли, а вкладені цикли дорівнюють розмірності. Наприклад, щоб ініціалізувати 3D-масив, ми повинні використовувати три вкладені цикли. Давайте подивимося на приклад.
приклад: У наведеному нижче прикладі ми ініціалізуємо 2D-масив 1. Зовнішній цикл використовується для відстеження рядків i=0 означає перший рядок через 0 індексування подібним чином j=0 означає перший стовпець і комбінування цього x [0][0] представляє першу клітинку двовимірного масиву.
int x[2][4]; for(int i = 0; i <2; i++){ for(int j = 0; j <4; j++){ x[i][j] = 1; } }> Доступ до елементів двовимірних масивів у C++
Ми можемо отримати доступ до елементів двовимірного масиву за допомогою індексів рядків і стовпців. Це схоже на позицію елемента матриці, але єдина відмінність полягає в тому, що тут індексація починається з 0.
Синтаксис:
array_name[i][j];>
де,
типи даних java
- я: Індекс рядка.
- j: Індекс колонки.
приклад: Нижче наведено індекс елементів другого рядка та третього стовпця.
int x[1][2];>
Давайте зрозуміємо це за допомогою коду, надрукувавши елементи 2D-масиву.
Приклад 2D масиву
C++
// c++ program to illustrate the two dimensional array> #include> using> namespace> std;> > int> main()> {> > >int> count = 1;> > >// Declaring 2D array> >int> array1[3][4];> > >// Initialize 2D array using loop> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <4; j++) {> >array1[i][j] = count;> >count++;> >}> >}> > >// Printing the element of 2D array> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <4; j++) {> >cout << array1[i][j] <<>' '>;> >}> >cout << endl;> >}> > >return> 0;> }> |
>
>Вихід
python зменшити
1 2 3 4 5 6 7 8 9 10 11 12>
Пояснення: У наведеному вище коді ми ініціалізували кількість «1» і оголосили 2D-масив із 3 рядками та 4 стовпцями, після чого ми ініціалізували масив значенням count і збільшували значення count у кожній ітерації циклу. Потім ми друкуємо 2D-масив за допомогою вкладеного циклу, і ми бачимо в наведеному нижче виході, що є 3 рядки та 4 стовпці.
Часова складність: O(n*m)
Космічна складність: O(n*m)
де n – кількість рядків, а m – кількість стовпців.
Тривимірний масив у C++
Тривимірний масив — це структура даних, яка зберігає елементи в тривимірній кубоїдній структурі. Його можна візуалізувати як сукупність кількох двовимірних масивів, складених один на одного. Кожен елемент у тривимірному масиві ідентифікується трьома індексами: індексом рядка, індексом стовпця та індексом глибини.

Оголошення тривимірного масиву в C++
Щоб оголосити 3D-масив у C++, нам потрібно вказати його третій вимір разом із 2D-вимірами.
Синтаксис:
dataType arrayName[d][r];>
- тип даних: Тип даних, які будуть зберігатися в кожному елементі.
- ім'я масиву: Назва масиву
- d: Кількість двовимірних масивів або глибина масиву.
- r: Кількість рядків у кожному двовимірному масиві.
- c: Кількість стовпців у кожному двовимірному масиві.
приклад:
int array[3][5][2];>
Ініціалізація тривимірного масиву в C++
Щоб ініціалізувати 3D-масив у C++, ми використовуємо ті самі методи, що й для ініціалізації 2D-масиву. У 3D-масиві ми маємо ще один вимір, тому нам потрібно додати ще один вкладений список елементів.
Тривимірний масив у C можна ініціалізувати за допомогою:
- Список ініціалізаторів
- Петлі
Ініціалізація 3D-масиву за допомогою списку ініціалізаторів
Спосіб 1: У цьому методі ми повинні записати загальну кількість елементів у фігурних дужках, і кожен елемент розміщується на своєму місці відповідно до заданого розміру.
int x[3][5][2] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30};> Спосіб 2 (краще) : у цьому методі ми розділили елементи за допомогою вкладених списків, і його легко читати.
int x[3][5][2] = { { {0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9} } , { {10, 11}, {12, 13}, {14, 15}, {16, 17}, {18, 19} } , { {20, 21}, {22, 23}, {24, 25}, {26, 27}, {28, 30} } , } ;> Ініціалізація тривимірного масиву за допомогою циклів
Цей метод такий самий, як ініціалізація двовимірного масиву за допомогою циклів із ще одним вкладеним циклом для третього виміру.
int x[3][5][2]; for (int i = 0; i <3; i++) { for (int j = 0; j <5; j++) { for (int k = 0; k <2; k++) { x[i][j][k] = (some_value) ; } } }> Доступ до елементів тривимірного масиву в C++
Отримати доступ до елементів у 3D-масивах так само просто, як і до елементів у 2D-масивах. Тут нам потрібно додатково попрацювати, так це додати ще один вкладений цикл, щоб відстежувати третій вимір.
C++
// C++ program to illustrate the 3d array> #include> using> namespace> std;> > int> main()> {> > >int> count = 0;> >// declaring 3d array> >int> x[2][2][3];> > >// initializing the array> >for> (>int> i = 0; i <2; i++) {> >for> (>int> j = 0; j <2; j++) {> >for> (>int> k = 0; k <3; k++) {> >x[i][j][k] = count;> >count++;> >}> >}> >}> > >// printing the array> >for> (>int> i = 0; i <2; i++) {> >for> (>int> j = 0; j <2; j++) {> >for> (>int> k = 0; k <3; k++) {> >printf>(>'x[%d][%d][%d] = %d
'>, i, j, k,> >x[i][j][k]);> >count++;> >}> >}> >}> > >return> 0;> }> |
>
шрифт gimp
>Вихід
x[0][0][0] = 0 x[0][0][1] = 1 x[0][0][2] = 2 x[0][1][0] = 3 x[0][1][1] = 4 x[0][1][2] = 5 x[1][0][0] = 6 x[1][0][1] = 7 x[1][0][2] = 8 x[1][1][0] = 9 x[1][1][1] = 10 x[1][1][2] = 11>
Пояснення: У наведеному вище коді ми ініціалізували 3D-масив за допомогою циклу, як пояснено вище, з числом від 0 до 7 за допомогою змінної count, а потім отримали доступ до елементів за допомогою того самого циклу, що використовується для ініціалізації 3D-масиву. Єдина відмінність полягає в тому, що замість призначення елемента в конкретну позицію скажіть x[0][0][1]=1 ми друкуємо елемент, що зберігається в цьому місці, як видно з наведеного нижче виводу.