Многомерни масиви 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достъп до третото измерение на масива

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

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