网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 程序设计-> C/C++/VC-> 用carray解决多维动态数组问题

用carray解决多维动态数组问题
作者:佚名 来源:InterNet 加入时间:2005-1-28
相关文章 相关书籍:
对于任何一门语言而言,多维动态数组总是一个让人有点头疼的问题,一维与二维的设计不一样,顺序访问与随机访问的设计不一样。如果在编程时需要实现高维数组,则又要翻出数据结构的书好好动一翻脑筋。其实中需简单地扩展MFC提供的CArray模板类,就可以在C++中很容易地实现任意多维动态数组。

根据CArray的使用方法,如下的几行语句似乎就实现了三维动态整型数组:

typedef CArray<int, int&> DA1;
typedef CArray<DA1, DA1&> DA2;
typedef CArray<DA2, DA2&> DA3;
DA3 da3;


da3似乎就是一个三维动态整型数组,而且是一个参差数组。但直接这样编译会出错,原因是CArray没有定义“=”运算符。为解决这个问题可以定义一个CArray的导出类。代码如下:

// UltraCArray_T.h
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ULTRACARRAY_T_H__552AA3BD_C40E_4090_B373_53767023912A__INCLUDED_)
#define AFX_ULTRACARRAY_T_H__552AA3BD_C40E_4090_B373_53767023912A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <Afxtempl.h>
template <class TYPE, class ARG_TYPE>
class UltraCArray_T  :  public CArray <TYPE, ARG_TYPE> 
{
public:
 void operator =(const UltraCArray_T<TYPE, ARG_TYPE> &rhs);

};

template <class TYPE, class ARG_TYPE>
void UltraCArray_T<TYPE, ARG_TYPE>
::operator =(const UltraCArray_T<TYPE, ARG_TYPE> &rhs)
{
RemoveAll();
Append(rhs);
}

#endif // 
!defined(AFX_ULTRACARRAY_T_H__552AA3BD_C40E_4090_B373_53767023912A__INCLUDED_)


使用UltraCArray_T即可实现任意多维的动态参差数组。代码如下:

typedef UltraCArray<int, int&> DA1;
typedef UltraCArray<DA1, DA1&> DA2;
typedef UltraCArray<DA2, DA2&> DA3;
DA3 da3;


此处的da3就是一个三维动态数组。可以使用CArray的任意函数调用,如使用da3[i][j][k]形式。

[文章录入员:nancy]

相关文章 相关书籍:
本站推荐内容

近期主机类热搜关键词:
美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

C/C++/VC
C/C++/VC
C++Builder
Basic/VB类
Delphi/Pascal
Java编程
FORTRAN
其它
电脑教程阅读排行
·新手入门:c++经典
·VC开发实例
·ping的源程序
·Visual C++编程技巧之一
·Visual C++程序设计中的...
·Windows 中不规则窗体的编...
·扔掉Socket实现网络编程
·例解用 VC++ 6.0 实现 ...
·VC实现PC并行端口数字信息输入...
·轻轻松松C to C++(一)