Статические
массивы, аля 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) тут.
Дерзайте!