自定义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; }