/* ======================================================================================= */ /** * 疑似二次元配列オブジェクト * * コンストラクタで配列のサイズ(縦*横)を指定して * 演算子をオーバーロードしているのでそのまま使用することが可能 * 例: * Array2D arr(3,4); //< arr[3][4] * arr(0,2)=10; //< arr[0][2]に10を代入 * box=arr(1,3); //< arr[1][3]の値を代入 * * 2012/08/24 ver1.0 基本形 * 2013/03/25 ver1.2 メンバ変数 arr を mArrayに変更 * インクルードガードの名前をARRAY2D_H_ を __ARRAY2D_H__に変更 * 変数誤字修正 */ /* ======================================================================================= */ #ifndef __ARRAY2D_H__ #define __ARRAY2D_H__ template
class Array2D{ public: Array2D(int height,int width):mArray(0),mHeight(height),mWidth(width){ mArray = new T[mHeight*mWidth]; } ~Array2D(){ delete[](mArray); mArray = 0; } T& operator()(int left,int right){ return mArray[left*mWidth+right]; } const T& operator()(int left,int right)const{ return mArray[left*mWidth+right]; } private: T* mArray; const int mWidth; const int mHeight; }; #endif//__ARRAY2D_H__