VCdog(狗)编程网

vc狗编程网希望你喜欢

博客园 首页 新随笔 联系 订阅 管理

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

  转载:VC 狗编程网(www.vcdog.com