CTypedPtrList详细说明和具体用法

CTypedPtrList类是个模板类,一般在软件开发中用到的时候比较多,它的作用就是类似一个链表,下面是这个类的原型

template < class BASE_CLASS, class TYPE>
class CTypedPtrList : public BASE_CLASS

第一个参数说明是列表的基类,这里必须是个指针列表类(Coblist或者CPtrlist,自己觉得用其他的列表类也可以,只要是指针列表类)

第二个参数指在列表类中所存放的类型

为什么不直接用Coblist或者CPtrlist呢?这是有原因的,因为CTypedPtrList类又进一步的封装了CPtrlist,并且为消除了一些错误,还提供了一些类型的强制转化,所以说一般都是用CTypePtrList这个模板类,你也不用担心这个类封装以后会变的速度慢,因为CTypedPtrList类封装以后里面的函数是内联的,如果你想真正想掌握这个模板类还是需要看看他提供的成员函数,下面是它的成员函数
构造

CPtrList

构造一个空的void指针列表

首/尾访问

GetHead

返回列表(不能为空)的头元素

GetTail

返回列表(不能为空)的尾元素

操作

RemoveHead

移走列表的头元素

RemoveTail

移走列表的尾元素

AddHead

将一个元素(或另一列表中的所有元素)增加到列表头(成为新的列表头)

AddTail

将一个元素(或另一列表中的所有元素)增加到列表尾(成为新的列表尾)

RemoveAll

从此列表中移走所有元素

重复

GetHeadPosition

返回列表头元素的位置

GetTailPosition

返回列表尾元素的位置

GetNext

获取用于重复的下一个元素

GetPrev

获取用于重复的上一个元素

获取/修改

GetAt

获取在给定位置的元素

SetAt

设置在给定位置的元素

RemoveAt

从此列表中移走给定位置的元素

插入

InsertBefore

在一个给定位置之前插入一个新元素

InsertAfter

在一个给定位置之后插入一个新元素

搜索

Find

获取一个由指针值指定的元素的位置

FindIndex

获取由一个索引(从零开始)指定的元素的位置

状态

GetCount

返回此列表中的元素数目

IsEmpty

测试列表是否为空(无元素)

只要你充分能用上上面的函数我想你的CTypedPtrList这个模板类也掌握的很好了,

下面是个例子说明

首先自己定义一个类或者结构体都是可以的,只要你符合标准,下面我来定义一个结构体

Typedefstruct _jiegouti

{

Cstring Name;

Int Age;

}Student,*lpstudent //这里只是定义一个结构体

Typedef CtypedPtrList<CPtrList ,lpstudent>CStudent;//这里定义个模板类型

CStudent m_student;//定义这个模板的变量

//下面是往这个列表中模板中添加对象,

lpstudent MyStudent;//定义一个结构体指针变量;

MyStudent =New Student;//在堆中创建一个学生

//为这个学生添加信息

MyStudent->Name=”zl”;

MyStudent->Age=12;

m_student. AddTail(MyStudent);//把这个学生添加模板这个容器中

当然了你还可以查看容器中学生的信息,请看下面代码

Lpstudent lpstudent;

Cstring TempName;

Int TempAge;

POSITION pos=m_student. GetHeadPosition();

//循环遍历找出容器中的所有学生的信息

while (pos!=NULL)

{

lpstudent=m_student.GetNext(pos);

TempName=lpstudent->Name;//得到学生的名字

TempAge=lpstudent->Age;//得到学生的年龄

}

当然了你也可以删除这个容器中的学生对象,代码如下

POSITION pos= m_student.GetHeadPosition();

while(pos!=NULL)

{

Lpstudent lpstudent;

lpstudent=m_HotInfo.GetNext(pos);

delete[]lpstudent;

}

注意当一个CTypedPtrList对象被删除时,或者是当它的元素被删除时,只有指针被删除了,而它们所引用的项并没有被删除。这个大家必须自己琢磨一下,自己思考比我说效果还好当然了我这里只是说明了,这个模板的几个用法,其实还是有很多用法,因为他的成员函数也是很多的,你可以根据自己的想法去实现就可以,还有就是不管你怎么弄,其实还是里面的成员函数,你自己只要多看几点这个模板的成员函数我想对你不是很难.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值