博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CTypedPtrList的具体用法
阅读量:6082 次
发布时间:2019-06-20

本文共 1961 字,大约阅读时间需要 6 分钟。

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

  template < class BASE_CLASS, class TYPE>

  class CTypedPtrList : public BASE_CLASS

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

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

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

构造函数 

CPtrList  构造一个空的void指针列表

GetHead()得到列表的首元素(列表不能不空);

GetTail()得到列表的尾元素(列表不能不空);

操作

重复

移走列表的头元素

移走列表的尾元素

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

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

从此列表中移走所有元素

获取/修改

返回列表头元素的位置

返回列表尾元素的位置

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

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

插入

获取在给定位置的元素

设置在给定位置的元素

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

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

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

搜索

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

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

状态

返回此列表中的元素数目

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

 

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

转载于:https://www.cnblogs.com/jameskun77/p/3159851.html

你可能感兴趣的文章
开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
查看>>
开源磁盘加密软件VeraCrypt教程
查看>>
本地vs云:大数据厮杀的最终幸存者会是谁?
查看>>
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>
shadowtunnel v1.7 发布:新增上级负载均衡支持独立密码
查看>>
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>