MFC集合类学习笔记(1)

导读:

  实际上集合类就是数据结构中的顺序存储结构和链表存储结构。它的优点就是建立这样的存储结构简单,并且把相关的操作集中成函数,方便用户的调用。比如顺序存储用到数组,如果要在数组中的固定位置添加一项,普通的方法就是要用一个for循环,有点烦琐。而在集合类中只要用一个add函数就完成了,相对简单一点。

  

  数据结构是软件设计中的一个重要组成部分。因此我们有必要搞清楚集合类的相关问题。

  

   1 3 种类型

  集合类中有3种大的类型:

  (1) Array:数组,可以动态的改变大小,有索引值和最大下标等。

  (2) List:双向链表,无索引,链表有头尾,插入元素要比数组快。

  (3) Map:是一种映射,俗名“字典”,是一种关联式数组。(在此不做讨论)

  

   2 .各自特点:

  类型 是否有序 插入元素速度 搜索元素速度 索引

  Array 有 慢 慢 有

  List 有 快 慢 无

  

   3 MFC 中的集合类

  类 是否使用模板 是否支持串行化 是否支持倾印

  CArray 是 是 是

  CTypedPtrArray 是 可能 是

  CByteArray 否 是 是

  CDWordArray 否 是 是

  CObArray 否 是 是

  CPtrArray 否 否 是

  CStringArray 否 是 是

  CWordArray 否 是 是

  CUIntArray 否 否 是

  CList 是 是 是

  CTypedPtrList 是 可能 是

  COblist 否 是 是

  CStringList 否 是 是

  

  

   4 .几点说明

  (1) 有些集合类是从c++模板支持的,如CArray,CList,使用时必须指出所要收集对象的类型,比如int,char,CPoint等,可以参考一下c++模板的知识。

  

  (2)在表中有2个“可能“,因为CTypedPtrArray,CTypedPtrList这些类在使用时要指定基类,如果基类可以串行化,那么它就可以串行化。

  

  (3)在深入浅出MFC中,作者说CUIntArray是可以串行化的,但我在做项目时证明它是不可以串行化的,希望读者注意

  如一个对象类:

  Void CStudent::Serialize(CArchive &ar)

  {

  ……

  m_array.Serialize(ar);//这里m_array是CUIntArray的对象

  }

  可是运行后发现并没有成功。因此只好采用for循环:



本文转自

http://blog.programfan.com/article.asp?id=22457
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值