В този урок ще научим за многомерните масиви в C ++. По-конкретно, как да ги декларираме, да имаме достъп до тях и да ги използваме ефективно в нашата програма.
В C ++ можем да създадем масив от масив, известен като многомерен масив. Например:
int x(3)(4);
Тук x е двуизмерен масив. Той може да побере максимум 12 елемента.
Можем да мислим за този масив като таблица с 3 реда и всеки ред има 4 колони, както е показано по-долу.

Триизмерните масиви също работят по подобен начин. Например:
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 елемента.

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
достъп до третото измерение на масива
Както виждаме, сложността на масива нараства експоненциално с увеличаването на размерите.