Динамические массивы на C++

 

Статические массивы, аля int a[3]={3,5,7}, хороши своей простотой. Но бывают случаи, когда "статика" массивов мешает. Например, Вы хотите написать программу перемножения матриц любых порядков. Вот тут статический массив не просто мешает - его применение здесь практически невозможно! Итак, встречайте - динамический массив!

Что же это такое? Это когда Вы во время работы своей программы (а не во время разработки) можете менять размеренность массивов. И начнем мы с одномерных (векторных) массивов.

int x = 5; // тут задается "длина" массива (при заданном значении нам доступно 5 элементов int)

int *arr = new int[x];
// это создание

// а это проверка
arr[0]=1347;
arr[4]=-124;
   
cout << arr[0] << endl << arr[4] << endl;


Освобождение памяти (или удаление, что не совсем точно) производиться так:

delete[]arr;


Двумерные (матричные) массивы создаются немногим сложнее:

int x = 5;
int y = 5;

/*
размеры масива */
   
int **arr = new int*[x];
for(int i=0;i<x;i++) arr[i]=new int[y];


"
Удаление" производиться так:

for(int i=0;i<x;i++) delete[]arr[i];
delete[]arr;


Трехмерные массивы:

int x = 5;
int y = 5;
int z = 4;
/* размеры массива */

int ***arr = new int**[x];

for(int i=0;i<x;i++)
{

arr[i]=new int*[y];
for(int j=0;j<y;j++) arr[i][j]=new int[z];

}


Удаление трехмерных массивов производиться так:

for(int i=0;i<x;i++)
{

for(int j=0;j<y;j++)
{

delete[]arr[i][j];

}
delete[]arr[i];

}
delete[]arr;


Четырех-, пяти- а также n-мерные создаются по тому же алгоритму. Для примера покажу четырехмерный:

int x=3,y=3,z=3,t=3;
int ****arr = new int***[x];
for(int i=0;i<x;i++)
{

arr[i] = new int**[y];
for(int j=0;j<y;j++)
{

arr[i][j] = new int*[z];
for(int k=0;k<z;k++)
{

arr[i][j][k] = new int[t];

}

}

}


Мы создавали только массивы типа int. Также само можно создавать и других типов. Ниже динамический массив типа float:

int x = 3;
int y = 7;

float **arr = new float*[x];
for(int i=0;i<x;i++) arr[i]=new float[y];


Удаляется он так же само.

Не забудьте внести iostream.h чтобы cout работал (#include <iostream.h>)

Написанные файлы можно скачать (для Linux) тут (для Windows) тут.

Дерзайте!

 

НАЗАД

Hosted by uCoz