对象链表与对象数组的使用

http://wtunuiyf.blog.163.com/blog/static/1800320068209535548/

在许多时候,我们总会有一大堆相关且类似的数据集需要处理。对于单个变量来说,通常的作法是定义一个数组来进行数据的存储,例如char a[10],int b[20]等等,但这种方法往往是用于处理一些不太相关的数据,假设我们有一个物体同时具有好几个属性,而这样的物体又有很多,那么再来用单独的数组显然就会令数据结构相当的复杂,也许我们可以想到还有结构类型,然后再以结构类型来定义结构数组,嗯,这倒是一个很不错的想法,那么多问一句,如果还有对该物体的操作呢?如此一来,就很自然的想到“类”的概念上,那么如何以一个类定义成数组呢?下面就来解答。

  在VC中支持一种被称作“对象数组”与“对象链表”的数据结构(从我所看的资料上是这么描述的),它们就与一维的数组或链表的作用相似,可以方便的添加一系列相同数据结构的对象,用法也比较相似。首先需要做的是添加一个头文件“afxtempl.h”,然后便可以进行相关的定义了。
  举一个系统预定义的数组或链表类型,一个是CStringArray,另一是CStringList,一看名字就可以推测出是CString的数组与链表。以CStringArray为例,里面包含了用于操作的方法,最常用的是CStringArray::Add(const CString& newElement),该方法的作用是在数组的最尾添加一个新的元素,数组的下标由0开始,获得数组中元素的方法是调用CStringArray::GetAt(INT_PTR nIndex),nIndex即是数组元素的下标,还要很多必要的操作例如获取数组元素个数,GetCount(),判断数组是否为空IsEmpty()等等。CStringList有类似的方法,获得最后元素的位置:pos = GetTailPosition(),然后在末尾插入新的元素,InsertAfter(pos, newElement)等等。
  回到正题,定义对象数组与对象链表,假设我们已经创建了一个新类class MyClass,现存需要定义一个数组或链表,可以做如下处理:
  typedef CTypedPtrArray<CObject, CMyClass&> CMyClassArray;
  假设CMyClass的基类是CObject,或者可以定义成链表:
  typedef CTypedPtrList<CObject, CMyClass*> CMyClassList;
  那么接下来的工作就与CStringArray或CStringList差不多了,大家自己试试吧。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值