logo

Багатовимірний масив C++

Масив — це тип структури даних, який використовується для зберігання колекції елементів одного типу даних, що зберігаються в безперервних розташуваннях пам’яті. Масиви можуть бути одновимірними або багатовимірними залежно від кількості напрямків, у яких масив може рости. У цій статті ми вивчатимемо багатовимірні масиви, такі як двовимірні масиви та тривимірні масиви.

Що таке багатовимірний масив у 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 як для рядків, так і для стовпців.

організація двовимірного масиву в c++

Синтаксис 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++

Оголошення тривимірного масиву в C++

Щоб оголосити 3D-масив у C++, нам потрібно вказати його третій вимір разом із 2D-вимірами.

Синтаксис:

dataType arrayName[d][r];>
  • тип даних: Тип даних, які будуть зберігатися в кожному елементі.
  • ім'я масиву: Назва масиву
  • d: Кількість двовимірних масивів або глибина масиву.
  • r: Кількість рядків у кожному двовимірному масиві.
  • c: Кількість стовпців у кожному двовимірному масиві.

приклад:

int array[3][5][2];>

Ініціалізація тривимірного масиву в C++

Щоб ініціалізувати 3D-масив у C++, ми використовуємо ті самі методи, що й для ініціалізації 2D-масиву. У 3D-масиві ми маємо ще один вимір, тому нам потрібно додати ще один вкладений список елементів.

Тривимірний масив у C можна ініціалізувати за допомогою:

  1. Список ініціалізаторів
  2. Петлі

Ініціалізація 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 ми друкуємо елемент, що зберігається в цьому місці, як видно з наведеного нижче виводу.