#include <iostream>
#include <time.h>
using namespace std;
//Класс Массив (двумерный)
template <typename T>
class TMassive
{
private:
unsigned int Row;
unsigned int Col;
T** Data;
public:
//Конструктор - Инициализация массива
TMassive(unsigned Rows, unsigned Cols)
{
Row = Rows;
Col = Cols;
Data = new T*[Row];
for (unsigned int i=0; i<Row; i++)
Data[i] = new T[Col];
}
//Деструктор класса
~TMassive()
{
for (unsigned int i=0; i<Row; i++)
delete Data[i];
delete[] Data;
}
//Заполнение массива Случайными величинами
void Random(unsigned int Max, bool MinZero = true)
{
srand(time(NULL));
for (unsigned int i=0; i<Row; i++)
for (unsigned int j=0; j<Col;j++)
Data[i][j] = rand() % Max * ((MinZero)?((rand()%2)?1:-1):1);
}
//Вывод массива на экран
void Print(void)
{
for (unsigned int i=0; i<Row; i++)
{
for (unsigned int j=0; j<Col; j++)
cout<<Data[i][j]<<" ";
cout<<endl;
}
}
//Оператор возврата значения массива
T& operator()(unsigned int Rows, unsigned int Cols)
{
return Data[Rows][Cols];
}
//Оператор индекса
T* operator[](unsigned int Rows)
{
return Data[Rows];
}
};
void main(void)
{
setlocale(LC_ALL,"Russian"); //Установим локаль
TMassive<int> Arr(10,10);
Arr.Random(100,false);
Arr.Print();
cout<<endl<<Arr(1,1);
cout<<endl<<Arr[2][2];
}