频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

用carray解决多维动态数组问题

来源: 作者: 出处:巧巧读书 2006-09-06 进入讨论组

  对于任何一门语言而言,多维动态数组总是一个让人有点头疼的问题,一维与二维的设计不一样,顺序访问与随机访问的设计不一样。如果在编程时需要实现高维数组,则又要翻出数据结构的书好好动一翻脑筋。其实只需简单地扩展MFC提供的CArray模板类,就可以在C++中很容易地实现任意多维动态数组。

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

typedef CArray DA1;

typedef CArray DA2;

typedef CArray 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 

template 

class UltraCArray_T  :  public CArray  

{

public:

 void operator =(const UltraCArray_T &rhs);



};



template 

void UltraCArray_T

::operator =(const UltraCArray_T &rhs)

{

RemoveAll();

Append(rhs);

}



#endif // 

!defined(AFX_ULTRACARRAY_T_H__552AA3BD_C40E_4090_B373_53767023912A__INCLUDED_)


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

typedef UltraCArray DA1;

typedef UltraCArray DA2;

typedef UltraCArray DA3;

DA3 da3;


此处的da3就是一个三维动态数组。可以使用CArray的任意函数调用,如使用da3[i][j][k]形式。查看 http://www.qqread.com/other-devtool/d240044.html进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章