Освоение многомерных массивов в C++: объявление, инициализация и циклы
Многомерные массивы в C++
Это руководство проведет вас через объявление, инициализацию и итерацию по 2-мерным и 3-мерным массивам в C++. Включены практические примеры кода и лучшие практики.
В C++ многомерный массив — это просто массив массивов. Например:
int x[3][4];
Здесь x — двумерный массив, вмещающий 12 элементов. Представьте его как таблицу с 3 строками и 4 столбцами.

Трехмерные массивы следуют той же логике:
float x[2][4][3];
Всего 24 элемента, вычисленных перемножением размерностей: 2 × 4 × 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 столбца явными.

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}}
};
Обратите внимание: первое измерение содержит два блока по 3 строки, каждый с 4 столбцами.
Пример 1: двумерный массив
#include <iostream>
using namespace std;
int main() {
int test[3][2] = {{2, -5}, {4, 0}, {9, 1}};
for (int i = 0; i < 3; ++i) {
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
Фрагмент демонстрирует вложенный цикл for, который сначала итерирует по строкам, затем по столбцам, выводя каждый элемент.
Пример 2: ввод данных для двумерного массива
#include <iostream>
using namespace std;
int main() {
int numbers[2][3];
cout << "Enter 6 numbers: " << endl;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
cin >> numbers[i][j];
}
}
cout << "The numbers are: " << endl;
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
Здесь два вложенных цикла собирают пользовательский ввод, а затем отображают сохраненные значения.
Пример 3: трехмерный массив
#include <iostream>
using namespace std;
int main() {
int test[2][3][2] = {
{{1, 2}, {3, 4}, {5, 6}},
{{7, 8}, {9, 10}, {11, 12}}
};
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
Обход 3-мерного массива требует трех вложенных циклов — каждый соответствует измерению. Этот паттерн естественно масштабируется на более высокие размерности, хотя сложность растет быстро.
Язык C
- Массивы в C#: объявление, инициализация и операции
- Многомерные массивы в C#: двумерные массивы с примерами кода
- Зубчатые массивы в C#: объявление, инициализация и доступ
- Освоение операторов C++: полное руководство с практическими примерами
- Комментарии в C++: лучшие практики для читаемого и поддерживаемого кода
- Как передавать массивы в функции в C++: практическое руководство
- Техники копирования массивов в Java: подробное руководство
- Массивы в C++: объявление, инициализация и работа с указателями
- Динамическое выделение массивов в C++: практическое руководство с примерами кода
- MATLAB: Мастерство работы с многомерными и специальными массивами