正在加载图片...
第12单元文档/视图结构 247 m list Bubble. RemoveAllO 12.82基于模板的集合类 如果要描述一组自定义类型(如类和结构体等)的元素集合,可以使用基于模板的集合 类,基于模板的集合类也是以数组、链表和映射表三种方式组织集合类的数据结构。使用基 于模板的集合类需在程序中包含头文件 afxtempl h MFC的基于模板的集合类有: 类名 CArray 用以创建任何类型对象的数组 用以创建任何类型对象的链表 CM 用以创建任何类型对象的映射 CTypedPtrArray用以创建 CObArray和 CPtrArray对象安全类型数组 CTypedPtrlist用以创建 CObList和 CPtrList对象安全类型链表 CTypedPtr Map用以创建 COmAp和 CPtrMap对象安全类型映射 下面以 CArray为例说明基于模板的集合类的使用方法。 CArray是数组类,除了具有 般数组的特性外,最显著的特点是可以动态调整数组的大小。但在调整数组大小时,数组占 用的内存块需要重新移动,效率较低。如果不要求调整数组大小,则对数组集合的访问和对 第3单元介绍的普通数组的访问一样快。在使用数组之前,最好使用其成员函数 Setsize() 设置数组的初始大小和每次扩充的尺寸,这样可以避免在向数组添加元素时频繁的再分配内 存和拷贝数据。数组类适用于那些需要快速检索、很少需要增加或删除元素的集合。 在声明 CArray类的对象时,要说明数组元素的类型和增加元素、访问元素等操作的参 数类型 CArray <CRect, CRect&> m rectBubble 模板中的 CRect说明了该数组元素的类型,而 CRect&k说明使用 CArray的成员函数对数组进 行操作时,对应数组元素的参数类型。 对数组的操作,除了用下标操作符“[]”直接引用其元素外,还有向数组中增加元素 Add()和从数组中删除元素 RemoveAll()等 12.83映射类 映射类以一种字典的方式组织数据。每个元素由一个关键字和一个数值项组成,关键字 用作数值项的标识符,在集合中不允许重复,必须是唯一的。如果给出一个关键字,映射类 会很快找到对应的数值项。映射查找是以HASH表的方式进行的,因此在映射中查找数值 项的速度很快。除了基于模板的映射类外,预定义的映射类能支持 CString对象、字、 CObject 指针和无类型指针。例如, CMap WordToob类创建一个映射表对象后,就可以用WORD类 型的变量作为关键字来寻找对应的 CObject指针。映射类最适用于需要根据关键字进行快速 检索的场合。 要访问映射中的数据,可以用映射类的成员函数 GetStart Position()定位到映射表开始第 12 单元 文档/视图结构 - 247 - } m_listBubble.RemoveAll(); 12.8.2 基于模板的集合类 如果要描述一组自定义类型(如类和结构体等)的元素集合,可以使用基于模板的集合 类,基于模板的集合类也是以数组、链表和映射表三种方式组织集合类的数据结构。使用基 于模板的集合类需在程序中包含头文件 afxtempl.h。 MFC 的基于模板的集合类有: 类名 说明 CArray 用以创建任何类型对象的数组 CList 用以创建任何类型对象的链表 CMap 用以创建任何类型对象的映射 CTypedPtrArray 用以创建 CObArray 和 CPtrArray 对象安全类型数组 CTypedPtrList 用以创建 CObList 和 CPtrList 对象安全类型链表 CTypedPtrMap 用以创建 CObMap 和 CPtrMap 对象安全类型映射 下面以 CArray 为例说明基于模板的集合类的使用方法。CArray 是数组类,除了具有一 般数组的特性外,最显著的特点是可以动态调整数组的大小。但在调整数组大小时,数组占 用的内存块需要重新移动,效率较低。如果不要求调整数组大小,则对数组集合的访问和对 第 3 单元介绍的普通数组的访问一样快。在使用数组之前,最好使用其成员函数 SetSize() 设置数组的初始大小和每次扩充的尺寸,这样可以避免在向数组添加元素时频繁的再分配内 存和拷贝数据。数组类适用于那些需要快速检索、很少需要增加或删除元素的集合。 在声明 CArray 类的对象时,要说明数组元素的类型和增加元素、访问元素等操作的参 数类型: CArray <CRect, CRect&> m_rectBubble; 模板中的 CRect 说明了该数组元素的类型,而 CRect&说明使用 CArray 的成员函数对数组进 行操作时,对应数组元素的参数类型。 对数组的操作,除了用下标操作符“[ ]”直接引用其元素外,还有向数组中增加元素 Add()和从数组中删除元素 RemoveAll()等。 12.8.3 映射类 映射类以一种字典的方式组织数据。每个元素由一个关键字和一个数值项组成,关键字 用作数值项的标识符,在集合中不允许重复,必须是唯一的。如果给出一个关键字,映射类 会很快找到对应的数值项。映射查找是以 HASH 表的方式进行的,因此在映射中查找数值 项的速度很快。除了基于模板的映射类外,预定义的映射类能支持 CString 对象、字、CObject 指针和无类型指针。例如,CMapWordToOb 类创建一个映射表对象后,就可以用 WORD 类 型的变量作为关键字来寻找对应的 CObject 指针。映射类最适用于需要根据关键字进行快速 检索的场合。 要访问映射中的数据,可以用映射类的成员函数 GetStartPosition()定位到映射表开始
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有