📄 subject_34293.htm
字号:
<p>
序号:34293 发表者:lz 发表日期:2003-03-28 12:32:13
<br>主题:如何动态的生成一个二维数组
<br>内容:rt
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:bird 回复日期:2003-03-28 12:54:34
<br>内容:假设二维数组的元素是 Class T, 则可生成一个 template <class T>的动态二维数组。 必须注意以下几点。 <BR> 1,必须自定义一个以行数、列数为参数的构造函数。 <BR> 2,必须自定义析构函数,以保证在析构该二维数组类的同时确实清除所有元素的内存空间。 <BR> 3,为了使用方便,建议重载括号操作符,实现对元素的引用。 <BR> 4, 建议查看 CArray 的源码,以确认每个步骤。 <BR> 下面是基本框架: <BR> 头文件: <BR> #include <afxtempl.h> <BR> template <class T> class C2dArray: public CArray<CArray<T, T&>, CArray<T,T&>&> <BR> { <BR> protected: <BR> short row, col; <BR> public: <BR> C2dArray(); <BR> C2dArray(short row, short col); <BR> SetSize(short row, short col); <BR> virtual ~C2dArray(); <BR> <BR> T& operator () (short row, short col); // 重载括号操作 <BR> <BR> }; <BR> <BR> template <class T> inline T& C2dArray<T>::operator () (short row, short col) <BR> { <BR> ..... <BR> } <BR> <BR> CPP 文件: <BR> template <class T> C2dArray<T>::C2dArray() <BR> { SetSize(0,0);} <BR> template <class T> C2dArray<T>::C2dArray(short row, short col) <BR> { SetSize(row,col);} <BR> template <class T> C2dArray<T>::SetSize(short row, short col) <BR> { <BR> ..... <BR> } <BR> template <class T> C2dArray<T>::~C2dArray() <BR> { <BR> ... <BR> } <BR> C++ 的 new 操作直接支持多维数组的申请。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:bird 回复日期:2003-03-28 12:55:20
<br>内容: 用这两个宏<BR> #define matrix_allocate(matrix, width, height, TYPE) {\ <BR> matrix = new TYPE* [height];\ <BR> for(int _i = 0; _i < height; _i++)\ <BR> matrix[_i] = new TYPE[width];\ <BR> } <BR> #define matrix_delete(matrix, width, height){\ <BR> for(int _i = 0; _i < height; _i++)\ <BR> delete [] matrix[_i];\ <BR> delete [] matrix;\ <BR> matrix = 0;\ <BR> } <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -