关于选择集合类的建议

本文包含设计的详细信息有助于您选择特定应用程序所需的集合类。

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

  • 类形状的功能:顺序、索引和性能,如 集合形态功能 本主题后面的表所示。

  • 类是使用 C++ 模板

  • 在集合中的元素是可序列化

  • 集合中存储的元素是否可以为诊断转储

  • 集合是否是类型安全

下表概括了可用,集合形态功能,集合形态的特性。

  • 列 2 和列 3 顺序描述每个形状的和访问特性。 在表中,“排序”结尾意味着项插入和 Delete 的顺序决定它们在集合的顺序;不意味着项对其内容进行排序。 “索引”结尾表示集合中的项可以由整数索引检索,类似于典型数组的项。

  • 列 4 和列 5 描述每个形状的性能。 在需要插入到许多集合的应用程序速度可能,插入尤其重要;对于其他应用程序,查看速度可能是更重要。

  • 第 6 列描述每个形状是否允许元素复制。

集合形态功能

形状

ordered

索引的

插入元素

指定的元素的搜索

重复元素

List

Fast

速度

数组

int

速度

速度

映射

通过键

Fast

Fast

非 (键) 是 (值)

下表汇总,MFC 集合类的特性,特定 MFC 集合类中所有其他重要方面为选择的指南。 选择可能依赖类是否基于 C++ 模板,其元素都可以通过 序列化 MFC 文档序列化机制,其元素都可以通过 MFC 的诊断转储的机制转储,或者类是否是类型安全 -,可以保证类型存储在元素,并从集合检索基于类。

MFC 集合类的特性

使用 C++。

模板

可以为 。

已序列化

可以为 。

转储

Is

Type-Safe — 类型安全

CArray

是1

是1

CByteArray

是3

CDWordArray

是3

CList

是1

是1

CMap

是1

是1

CMapPtrToPtr

CMapPtrToWord

CMapStringToOb

CMapStringToPtr

CMapStringToString

是3

CMapWordToOb

CMapWordToPtr

CObArray

CObList

CPtrArray

CPtrList

CStringArray

是3

CStringList

是3

CTypedPtrArray

视情况而定2

CTypedPtrList

视情况而定2

CTypedPtrMap

视情况而定2

CUIntArray

是3

CWordArray

是3

1. 若要序列化,必须显式调用集合对象的函数;Serialize 若要转储,则必须显式调用 Dump 函数。 无法使用窗体 ar << collObj 序列化或窗体转储 dmp 的<< collObj。

2. Serializability 取决于基础集合类型。 例如,如果,一个类型化指针数组基于 CObArray,则序列化;如果基于 CPtrArray,则不序列化。 通常,“Ptr”类无法进行序列化。

3. 如果是用于标记此列,是类型安全提供了非模板集合类使用它遵循计划。 例如,在中,如果您在 CByteArray中存储字节,数组是类型安全的。 但是,如果您在使用它存储字符,其类型安全性最不确定。

请参见

任务

访问集合的所有成员

概念

集合

基于模板的类

如何:创建类型安全集合