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

  • 相关阅读:
    小程序网络请求封装(三)
    上传图片
    struts2导出excel
    金额超过一定位数显示异常问题
    限制日期控件 最大可选值为当前日期
    substr函数小结
    票号自动生成(按照一定的规则)
    Nginx
    Cron表达式以及定时任务配置
    HTML Input 表单校验之datatype
  • 原文地址:https://www.cnblogs.com/jameskun77/p/3159851.html
Copyright © 2011-2022 走看看