新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论高级C/C++编程、代码重构(Refactoring)、极限编程(XP)、泛型编程等话题
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 C/C++编程思想 』 → ctypedptrlist类 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5259 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: ctypedptrlist类 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     葛靖青001 美女呀,离线,快来找我吧!水瓶座1984-2-14
      
      
      等级:大三(研究MFC有点眉目了!)
      文章:168
      积分:595
      门派:XML.ORG.CN
      注册:2010/11/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给葛靖青001发送一个短消息 把葛靖青001加入好友 查看葛靖青001的个人资料 搜索葛靖青001在『 C/C++编程思想 』的所有贴子 点击这里发送电邮给葛靖青001 引用回复这个贴子 回复这个贴子 查看葛靖青001的博客楼主
    发贴心情 ctypedptrlist类

    【转自互联网】

    CTypedPtrList

      template < class BASE_CLASS, class TYPE >

      class CTypedPtrList : public BASE_CLASS

      参数: BASE_CLASS 类型指针列表类的基类;必须是一个指针列表类(CObList或CPtrList)。

      TYPE 保存在基类列表中的元素的类型。

      说明:

      CTypedPtrList类为类CPtrList的对象提供了一个类型-安全的“包装”。当你使用CTypedPtrList而不是CObList或CPtrList的时候,C++类型-检查工具帮助消除由不匹配的指针类型引发的错误。

      另外,CTypedPtrList包装实现了许多在使用CObList或CPtrList时要实现的强制转换。

      因为所有的CTypedPtrList函数都是内联的,所以使用这个模板不会明显地影响你的代码的大小和速度。

      从CObList派生的列表可以是连续的,但是从CPtrList派生的列表却不能。

      当一个CTypedPtrList对象被删除时,或者是当它的元素被删除时,只有指针被删除了,而它们所引用的项并没有被删除。

      有关使用CTypedPtrList的更多信息,参见“Visual C++程序员指南”中的文章“集合”和“基于模板的类”。

      #include <afxtempl.h>

      CTypedPtrList类成员

      首/尾元素访问

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

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

      操作

      RemoveHead 从列表的头部删除元素

      RemoveTail 从列表的尾部删除元素

      AddHead 将一个元素(或另一个数组中的所有元素)添加到列表的头部(产生一个新的头部)

      AddTail 将一个元素(或另一个数组中的所有元素)添加到列表的尾部(产生一个新的尾部)

      重复

      GetNext 获取用于反复的下一个元素

      GetPrev 获取用于反复的前一个元素

      获取/修改

      GetAt 获取在一个给定位置处的元素

      SetAt 设置在一个给定位置处的元素

      成员详细解释

      CTypedPtrList::GetHead

      TYPE& GetHead( );

      TYPE GetHead( ) const;

      返回值:

      如果是通过一个指向const CTypedPtrList的指针访问此列表,则GetHead返回一个类型由模板参数TYPE指定的指针。这使此函数只能被使用在赋值语句的右边,这样就保护了列表不被修改。

      如果列表被直接访问,或通过一个指向CTypedPtrList的指针访问,则GetHead返回对一个类型由模板参数TYPE指定的指针的引用。这使得此函数可以使用在赋值语句的任何一边,从而允许该列表可以被修改。

      参数: TYPE 指定保存在列表中的元素类型的模板参数。

      说明:

      此成员函数用来获取代表此列表中的头元素的指针。

      在调用GetHead之前,你必须保证该列表不是空的。如果该列表是空的,则Microsoft基础类库的调试版将给出断言。可以使用IsEmpty来检验该列表是否包含元素。

      CTypedPtrList::GetTail

      TYPE& GetTail( );

      TYPE GetTail( ) const;

      返回值:

      如果是通过一个指向const CTypedPtrList的指针访问此列表,则GetTail返回一个类型由模板参数TYPE指定的指针。这使此函数只能被使用在赋值语句的右边,这样就保护了列表不被修改。

      如果列表被直接访问,或通过一个指向CTypedPtrList的指针访问,则GetTail返回对一个类型由模板参数TYPE指定的指针的引用。这使得此函数可以使用在赋值语句的任何一边,从而允许该列表可以被修改。

      参数: TYPE 指定保存在列表中的元素类型的模板参数。

      说明:

      此成员函数用来获取此列表中的头元素。

      在调用GetTail之前,你必须保证该列表不是空的。如果列表是空的,则Microsoft基础类库的调试版将给出断言。使用IsEmpty来检验列表是否包含元素。

      CTypedPtrList::RemoveHead

      TYPE RemoveHead( );

      返回值:

      返回先前在列表头部的指针。这个指针的类型由模板参数TYPE指定。

      参数: TYPE 指定保存在列表中的元素类型的模板参数。

      说明:

      此成员函数从列表的头部删除元素并返回这个元素。

      在调用RemoveHead之前,你必须保证该列表不是空的。如果列表是空的,则Microsoft基础类库的调试版将给出断言。使用IsEmpty来检验列表是否包含元素。

      CTypedPtrList::RemoveTail

      TYPE RemoveTail( );

      返回值:

      返回先前在列表尾部的指针。这个指针的类型由模板参数TYPE指定。

      参数: TYPE 指定保存在列表中的元素类型的模板参数。

      说明:

      此成员函数从列表的尾部删除元素并返回这个元素。

      在调用RemoveHead之前,你必须保证该列表不是空的。如果列表是空的,则Microsoft基础类库的调试版将给出断言。使用IsEmpty来检验列表是否包含元素。

      CTypedPtrList::AddHead

      POSITION AddHead( TYPE newElement );

      void AddHead( CTypedPtrList <BASE_CLASS, TYPE> *pNewList );

    返回值:

      第一种版本返回新插入的元素的POSITION值。

      参数: TYPE 保存在基类列表中的元素的类型。

      newElement 要添加到此列表中的对象指针。可以是NULL值。

      BASE_CLASS 此类型指针列表类的基类;必须是一个指针列表类(CObList或CPtrList)。

      pNewList 一个指向另一个CTypedPtrList对象的指针。在pNewList中的元素将被添加到列表中。

      说明:

      此成员函数调用BASE_CLASS::AddHead。

      第一种版本将一个新元素添加到列表的头元素之前。

      第二种版本将另一个列表中的元素添加到此列表的头元素之前。

      CTypedPtrList::AddTail

      POSITION AddTail( TYPE newElement );

      void AddTail( CTypedPtrList <BASE_CLASS, TYPE> *pNewList );

      返回值:第一个版本返回新插入的元素的POSITION值。

      参数 TYPE 保存在基类列表中的元素的类型。

      newElement 要添加到此列表中的对象指针。可以是NULL值。

      BASE_CLASS 此类型指针列表类的基类;必须是一个指针列表类(CObList或CPtrList)。

      pNewList 一个指向另一个CTypedPtrList对象的指针。在pNewList中的元素将被添加到列表中。

      说明:

      此成员函数调用BASE_CLASS::AddTail。

      第一种版本将一个新元素添加到列表的尾元素之后。

      第二种版本将另一个列表中的元素添加到此列表的尾元素之后。

      CTypedPtrList::GetNext

      TYPE& GetNext( POSITION& rPosition );

      TYPE GetNext( POSITION& rPosition ) const;

      返回值:

      如果是通过一个指向const CTypedPtrList的指针访问此列表,则GetNext返回一个类型由模板参数TYPE指定的指针。这使此函数只能被使用在赋值语句的右边,这样就保护了列表不被修改。

      如果列表被直接访问,或通过一个指向CTypedPtrList的指针访问,则GetNext返回对一个类型由模板参数TYPE指定的指针的引用。这使得此函数可以使用在赋值语句的任何一边,从而允许该列表可以被修改。

      参数: TYPE 指定保存在列表中的元素类型的模板参数。

      rPosition 一个对先前调用GetNext,GetHeadPosition或其他成员函数返回的POSITION值的引用。

      说明:

      此成员函数用来获取由rPosition标识的列表元素,然后将rPosition设置为列表中的下一个项的POSITION值。如果你是通过调用GetHeadPosition或CPtrList::Find来建立初始位置的,你就可以使用GetNext来实现一个向前的反复循环。

      你必须保证你的POSITION值代表的是列表中的一个有效位置。如果位置是无效的,则Microsoft基础类库的调试版将给出断言。

      如果获取的元素是列表中的最后一个,则rPosition被设置为新值NULL。

      在一个反复中删除一个元素是有可能的。参见CObList::RemovAt的示例。

      CTypedPtrList::GetPrev

      TYPE& GetPrev(POSITION& rPosition );

      TYPE GetPrev( POSITION& rPosition ) const;

      返回值:

      如果是通过一个指向const CTypedPtrList的指针访问此列表,则GetPrev返回一个类型由模板参数TYPE指定的指针。这使此函数只能被使用在赋值语句的右边,这样就保护了列表不被修改。

      如果列表被直接访问,或通过一个指向CTypedPtrList的指针访问,则GetPrev返回对一个类型由模板参数TYPE指定的指针的引用。这使得此函数可以使用在赋值语句的任何一边,从而允许该列表可以被修改。

      参数: TYPE 指定保存在列表中的元素类型的模板参数。

      rPosition 一个对先前调用GetPrev或其它成员函数返回的POSITION值的引用。

      说明:

      此成员函数用来获取由rPosition标识的列表元素,然后将rPosition设置为列表中的下一个项的POSITION值。如果你是通过调用GetTailPosition或Find来建立初始位置的,你就可以使用GetPrev来实现一个反向的反复循环。

      你必须保证你的POSITION值代表的是列表中的一个有效位置。如果位置是无效的,则Microsoft基础类库的调试版将给出断言。

      如果获取的元素是列表中的第一个,则rPosition被设置为新值NULL。

      CTypedPtrList::GetAt

      TYPE& GetAt( POSITION position );

      TYPE GetAt( POSITION position ) const;

      返回值:

      如果是通过一个指向const CTypedPtrList的指针访问此列表,则GetAt返回一个类型由模板参数TYPE指定的指针。这使此函数只能被使用在赋值语句的右边,这样就保护了列表不被修改。

      如果列表被直接访问,或通过一个指向CTypedPtrList的指针访问,则GetAt返回对一个类型由模板参数TYPE指定的指针的引用。这使得此函数可以使用在赋值语句的任何一边,从而允许该列表可以被修改。

      参数: TYPE 指定保存在列表中的元素类型的模板参数。

      position 一个由先前调用GetHeadPosition或Find成员函数返回的POSITION值。

      说明:

      一个类型为POSITION的变量是此列表的一个关键字。它与索引是不一样的,你不能自己处理一个POSITION值。GetAt获取与一个给定位置关联的CObject指针。

      你必须确保你的POSITION值表示的是列表中的一个有效位置。如果它是无效的,则Microsoft基础类库的调试版将给出断言。

      这个内联函数调用了BASE_CLASS::GetAt。

      CTypedPtrList::SetAt

      void SetAt( POSITION pos, TYPE newElement );

      参数: pos 要被设置的元素的POSITION。

      TYPE 保存在基类列表中的元素类型。

      newElement 要被写入列表中去的对象指针。

      说明:

      此成员函数调用BASE_CLASS::SetAt。

      一个类型为POSITION的变量是此列表的一个关键字。它与索引是不一样的,你不能自己处理一个POSITION值。SetAt写对象指针到列表中指定位置。

      你必须确保你的POSITION值表示的是列表中的一个有效位置。如果它是无效的,则Microsoft基础类库的调试版将给出断言。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    ---人之所以能,是相信能!!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2011/1/11 15:44:00
     
     GoogleAdSense水瓶座1984-2-14
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 C/C++编程思想 』的所有贴子 点击这里发送电邮给Google AdSense 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/1 22:32:28

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms