#include<iostream>
using std::cin;
using std::cout;
using std::endl;
template<class T>
void Make2DArray(T **&x, size_t rows, size_t cols)
{
x = new T* [rows];
for (size_t i = 0; i != rows; ++i)
{
x[i] = new T[cols];
}
}
template<class T>
void Delete2DArray(T **&x, size_t rows)
{
for (size_t i = 0; i != rows; ++i)
{
delete [] x[i];
}
delete [] x;
x = 0;
}
template<class T>
void ChangeSize2D(T **& arr, size_t SizeRow, size_t SizeCol, size_t ToSizeRow, size_t ToSizeCol)
{
if( SizeRow > ToSizeRow || SizeCol > ToSizeCol ) cout << "error : ToSize should great than size ";
T **temp;
Make2DArray(temp, ToSizeRow, ToSizeCol);
for (size_t i = 0; i != SizeRow; ++i)
{
for (size_t j = 0; j != SizeCol; ++j)
{
temp[i][j] = arr[i][j];
}
}
Delete2DArray(arr, SizeRow);
/* arr = new T[ToSize];
for ( i = 0; i != ToSize; ++i)
{
if(i < size)
arr[i] = temp[i];
else
arr[i] = 0;
cout << temp[i];
}
delete [] temp;*/
arr = temp;
return;
}
int main()
{
const size_t SizeRow = 3;
const size_t SizeCol = 4;
const size_t ToSizeRow = 5;
const size_t ToSizeCol = 6;
int ** a ;
Make2DArray(a, SizeRow, SizeCol);
for (size_t i = 0; i != SizeRow; ++i)
{
for (size_t j = 0; j != SizeCol; ++j)
{
a[i][j] = i;
}
}
for ( i = 0; i != SizeRow; ++i)
{
for (size_t j = 0; j != SizeCol; ++j)
{
cout << a[i][j] << endl;
}
}
ChangeSize2D(a, SizeRow, SizeCol, ToSizeRow, ToSizeCol);
for ( i = 0; i != ToSizeRow; ++i)
{
for (size_t j = 0; j != ToSizeCol; ++j)
{
cout << a[i][j] << endl;
}
}
Delete2DArray(a, ToSizeRow);
return 0;
}