Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Освоение многомерных массивов в C++: объявление, инициализация и циклы

Многомерные массивы в C++

Это руководство проведет вас через объявление, инициализацию и итерацию по 2-мерным и 3-мерным массивам в C++. Включены практические примеры кода и лучшие практики.

В C++ многомерный массив — это просто массив массивов. Например:

int x[3][4];

Здесь x — двумерный массив, вмещающий 12 элементов. Представьте его как таблицу с 3 строками и 4 столбцами.

Освоение многомерных массивов в C++: объявление, инициализация и циклы

Трехмерные массивы следуют той же логике:

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 столбца явными.

Освоение многомерных массивов в 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}}
};

Обратите внимание: первое измерение содержит два блока по 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

  1. Массивы в C#: объявление, инициализация и операции
  2. Многомерные массивы в C#: двумерные массивы с примерами кода
  3. Зубчатые массивы в C#: объявление, инициализация и доступ
  4. Освоение операторов C++: полное руководство с практическими примерами
  5. Комментарии в C++: лучшие практики для читаемого и поддерживаемого кода
  6. Как передавать массивы в функции в C++: практическое руководство
  7. Техники копирования массивов в Java: подробное руководство
  8. Массивы в C++: объявление, инициализация и работа с указателями
  9. Динамическое выделение массивов в C++: практическое руководство с примерами кода
  10. MATLAB: Мастерство работы с многомерными и специальными массивами