Многомерные массивы С++
Многомерные массивы C++
В этом уроке мы узнаем о многомерных массивах в 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
. . Итак, два элемента, составляющие первое измерение:
Element 1 = { {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} } Element 2 = { {13, 4, 56, 3}, {5, 9, 3, 5}, {5, 1, 4, 9} }
Второе измерение имеет значение 3
. . Обратите внимание, что каждый из элементов первого измерения состоит из трех элементов:
{3, 4, 2, 3}, {0, -3, 9, 11} and {23, 12, 23, 2} for Element 1. {13, 4, 56, 3}, {5, 9, 3, 5} and {5, 1, 4, 9} for Element 2.
Наконец, есть четыре int
числа внутри каждого из элементов второго измерения:
{3, 4, 2, 3} {0, -3, 9, 11} ... .. ... ... .. ...<час>
Пример 1:двумерный массив
// C++ Program to display all elements
// of an initialised two dimensional array
#include <iostream>
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;
}
Вывод
test[0][0] = 2 test[0][1] = -5 test[1][0] = 4 test[1][1] = 0 test[2][0] = 9 test[2][1] = 1
В приведенном выше примере мы инициализировали двумерный int
массив с именем test который имеет 3 "строки" и 2 "столбца".
Здесь мы использовали вложенный for
цикл для отображения элементов массива.
- внешний цикл из
i == 0
доi == 2
получить доступ к строкам массива - внутренний цикл из
j == 0
доj == 1
доступ к столбцам массива
Наконец, мы печатаем элементы массива на каждой итерации.
<час>Пример 2. Получение входных данных для двумерного массива
#include <iostream>
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 < 3; ++j) {
cin >> 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;
}
Вывод
Enter 6 numbers: 1 2 3 4 5 6 The numbers are: numbers[0][0]: 1 numbers[0][1]: 2 numbers[0][2]: 3 numbers[1][0]: 4 numbers[1][1]: 5 numbers[1][2]: 6
Здесь мы использовали вложенный for
цикл для ввода массива 2d. После того, как все входные данные были приняты, мы использовали еще один вложенный for
. цикл для печати элементов массива.
Пример 3:Трехмерный массив
// C++ Program to Store value entered by user in
// three dimensional array and display it.
#include <iostream>
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;
}
Вывод
test[0][0][0] = 1 test[0][0][1] = 2 test[0][1][0] = 3 test[0][1][1] = 4 test[0][2][0] = 5 test[0][2][1] = 6 test[1][0][0] = 7 test[1][0][1] = 8 test[1][1][0] = 9 test[1][1][1] = 10 test[1][2][0] = 11 test[1][2][1] = 12
Основная концепция печати элементов трехмерного массива аналогична концепции двумерного массива.
Однако, поскольку мы манипулируем тремя измерениями, мы используем вложенный цикл for с тремя циклами вместо двух:
- внешний цикл из
i == 0
доi == 1
обращается к первому измерению массива - средний цикл от
j == 0
доj == 2
обращается ко второму измерению массива - самый внутренний цикл из
k == 0
доk == 1
обращается к третьему измерению массива
Как мы видим, сложность массива экспоненциально возрастает с увеличением размеров.
Язык C