2DArray

来源:互联网 发布:浏览器调试工具 java 编辑:程序博客网 时间:2024/06/05 00:50
#pragma once#include <Windows.h>#include <iostream>using namespace std;template<class DataType>class CMy2DArray{public:CMy2DArray(int iWidth,int iHeight);virtual ~CMy2DArray(void);int Size();int Width();int Height();void ReSize(int iWidth,int iHeight);DataType& Get(int iWidth,int iHeight);void Show();private:DataType* m_pArray;int m_iWidth;int m_iHeight;};template<class DataType>CMy2DArray<DataType>::CMy2DArray(int iWidth,int iHeight){m_pArray=new DataType[iWidth*iHeight];m_iWidth=iWidth;m_iHeight=iHeight;}template<class DataType>CMy2DArray<DataType>::~CMy2DArray(void){if (NULL!=m_pArray){delete[] m_pArray;m_pArray=NULL;}}template<class DataType>int CMy2DArray<DataType>::Size(){return m_iWidth*m_iHeight;}template<class DataType>int CMy2DArray<DataType>::Width(){return m_iWidth;}template<class DataType>int CMy2DArray<DataType>::Height(){return m_iHeight;}template<class DataType>DataType& CMy2DArray<DataType>::Get(int iWidth,int iHeight){return *(m_pArray+iHeight*m_iWidth+iWidth);}template<class DataType>void CMy2DArray<DataType>::ReSize(int iWidth,int iHeight){DataType* pNewArray=new DataType[iWidth*iHeight];int minWidth=(iWidth<m_iWidth?iWidth:m_iWidth);int minHeight=(iHeight<m_iHeight?iHeight:m_iHeight);for (int h=0;h<minHeight;h++){for (int w=0;w<minWidth;w++){pNewArray[h*iWidth+w]=m_pArray[h*m_iWidth+w];}}if (NULL!=m_pArray){delete[] m_pArray;m_pArray=NULL;}m_pArray=pNewArray;m_iWidth=iWidth;m_iHeight=iHeight;}template<class DataType>void CMy2DArray<DataType>::Show(){for (int h=0;h<m_iHeight;h++){for (int w=0;w<m_iWidth;w++){cout<<m_pArray[h*m_iWidth+w]<<" ";}cout<<endl;}}

原创粉丝点击