// simple dynamic 2d and 3d arrays which can be created on runtime and accessed // like ordinary arrays // author: Michal Švantner // date: 4.3.2007 // license: you are free to use this code on your own risk :) /*------------------------------ example code ---------------------------------- array2d my2darray(10,5); my2darray[1][3] = -2; my2darray[2][5] = 240; array3d my3darray(2,12,3); my3darray[0][9][0] = 0.456f; my3darray[1][1][3] = -24.4f; ------------------------------------------------------------------------------*/ #ifndef DYNAMICARRAYS_H #define DYNAMICARRAYS_H template struct arrayData { T* data; T& operator [](int index) {return data[index];} }; template struct arrayData2d { arrayData* data; arrayData& operator [](int index) {return data[index];} }; // dynamic two dimensional array template class array2d { arrayData* data; int w, h; public: array2d(int iwidth, int iheight) : w(iwidth), h(iheight) { data = new arrayData[w]; for(int i=0; i& operator [](int index) {return data[index];} int width() {return w;} int height() {return h;} }; // dynamic three dimensional array template class array3d { arrayData2d* data; int w, h, d; public: array3d(int iwidth, int iheight, int idepth) : w(iwidth), h(iheight), d(idepth) { data = new arrayData2d[w]; for(int i=0; i[h]; for(int j=0; j& operator [](int index) {return data[index];} int width() {return w;} int height() {return h;} int depth() {return d;} }; #endif