💊Двумерный динамический массив

Двумерный динамический массив представляет собой массив указателей на уже одномерные массивы.

int**arr = new int*[row];  // создаем массив указателей на другие массивы

Созданный массив нужно соответственно заполнить.

 for (int i = 0; i < row; i++)  // заполняем массив указателями
 {
     arr[i] = new int[col];
 }

И, конечно, нужно не забыть подчистить за собой память

for (int i = 0; i < row; i++)  // удаление массива
{
    delete [] arr[i];
}

delete [] arr;


Пример заполнения двумерного массива. Заполняем массивы на которые ссылается наш изначальный массив указателей.

for (int i = 0; i < row; i++)  // заполнение массива
{


    for (int x = 0; x < col; x++)
    {
        arr[i][x] = rand() % 20;
    }


}
for (int i = 0; i < row; i++)  // вывод массива
{


    for (int x = 0; x < col; x++)
    {
        cout << arr[i][x] << "\t|\t";
    }
    cout << endl;

}
результат


Так как массив динамический, мы можем указывать количество элементов во время компиляции.

int row;
int col;

cout << "Enter rows: ";      // ввод кол-ва строк/колонок
cin >> row;
cout << endl << "Enter columns: ";
cin >> col;

cout << "\n\n";
cout << row << " rows" << endl;
cout << col << " columns" << endl << endl;




int**arr = new int*[row];  // массив указателей на другие массивы



for (int i = 0; i < row; i++)  // заполняем массив указателями
{
    arr[i] = new int[col];
}




for (int i = 0; i < row; i++)  // заполнение массивов
{


    for (int x = 0; x < col; x++)
    {
        arr[i][x] = rand() % 20;
    }


}

for (int i = 0; i < row; i++)  // вывод массива
{


    for (int x = 0; x < col; x++)
    {
        cout << arr[i][x] << "\t|\t";
    }
    cout << endl;

}




for (int i = 0; i < row; i++)  // удаление (очистка) массива
{
    delete [] arr[i];
}

delete [] arr;
результат

Last updated