VC程序需要的集合类

本文提供详细信息,以帮助您选择适于特定应用程序需要的集合类。

集合类的选择取决于许多因素,包括:

  • 类形状的特性:排序、索引和性能,如本主题稍后介绍的集合形状特性表所示
  • 类是否使用 C++ 模板
  • 存储在集合中的元素是否可以序列化
  • 存储在集合中的元素是否可以转储以用于诊断
  • 集合是否是类型安全的

下表集合形状特性总结了可用集合形状的特性。

  • 第 2 列和第 3 列描述了每个形状的排序和访问特性。在表中,术语“已排序”表示按插入或删除项的顺序确定项在集合中的顺序,而不是指项按其内容排序。术语“已索引”表示集合中的项可以通过整数索引检索,这和典型数组中的项很相似。
  • 第 4 列和第 5 列描述了每个形状的性能。在需要对集合执行多次插入操作的应用程序中,插入速度可能特别重要;而对于其他应用程序,查找速度可能更重要。
  • 第 6 列描述了每个形状是否允许重复元素。

集合形状特性


形状

已排序?

已索引?
插入元素 搜索指定元素 重复元素?
列表
数组 按整数
映射 按键 否(键)是(值)

下表 MFC 集合类的特性总结了特定 MFC 集合类的其他重要特性,可以作为选择原则。您的选择可能取决于特定的因素,如类是否基于 C++ 模板,它的元素是否可以通过 MFC 的文档序列化机制序列化,它的元素是否可以通过 MFC 诊断转储机制转储,类是否是类型安全的,即是否可以保证存储在基于类的集合中和从该集合中检索的元素类型。

MFC 集合类的特性


使用 C++
模板
可以
序列化
可以
转储
类型安全
CArray11
CByteArray3
CDWordArray3
CList11
CMap11
CMapPtrToPtr
CMapPtrToWord
CMapStringToOb
CMapStringToPtr
CMapStringToString3
CMapWordToOb
CMapWordToPtr
CObArray
CObList
CPtrArray
CPtrList
CStringArray3
CStringList3
CTypedPtrArray 取决于类型2
CTypedPtrList 取决于类型2
CTypedPtrMap 取决于类型2
CUIntArray3
CWordArray3

1. 若要序列化,必须显式调用集合对象的 Serialize 函数;若要转储,必须显式调用集合对象的 Dump 函数。不能用 ar << collObj 的形式进行序列化,或用 dmp << collObj 的形式进行转储。

2. 可序列化性取决于基础集合类型。例如,如果类型指针数组基于 CObArray,则它可序列化;如果基于CPtrArray,则它不可序列化。通常情况下,“Ptr”类无法序列化。

3. 如果该列中的标记为“是”,则只要按本来用途使用非模板集合类,它就是类型安全的。例如,如果将字节存储在 CByteArray 中,则该数组是类型安全的。但如果用该数组存储字符,则它的类型安全不太可靠。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值