自定义C++二维数组雏形类
因为C++不直接支持二维数组,例如int a[8][10];是可以的,但是int dim1 = 8; int dim2 = 10; int a[dim1][dim2];却不可以,所以自定义了一个二维数组类,方便动态创建二维数组。
学习C++过程中参考某书学习并写下的一个二维数组雏形类,求bug修正和完善,谢谢。。。
程序代码:#include <string>
#include <iostream>
using namespace std;
template<typename T>
class Array2D //表示二维数组的类
{
public:
class Array1D //表示一维数组的类
{
public:
T& operator[](int index)
{
return arr1[index];
}
const T& operator[](int index) const
{
return arr1[index];
}
T* CreateArr1D(int nums)
{
arr1 = new T[nums];
return arr1;
}
~Array1D()
{
delete[] arr1;
}
//...
private:
T* arr1 = nullptr;
};
Array2D(int dim1, int dim2)
{
arr2 = new Array1D[dim1];
for (int i = 0; i < dim1; i++)
arr2[i].CreateArr1D(dim2);
}
Array1D& operator[](int index)
{
return arr2[index];
}
const Array1D& operator[](int index) const
{
return arr2[index];
}
~Array2D()
{
delete[] arr2;
}
//...
private:
Array1D* arr2;
};
//Test:
int main()
{
Array2D<int> p(3,5);
p[0][0] = 100;
p[2][4] = 200;
cout << p[0][0] << " " << p[2][4] << endl;
}

