集合
Microsoft 基础类库 (mfc) 提供集合类管理对象组。 这些类包括两种类型:
从 C++ 模板创建的集合类。
从模板不创建的集合类。
备注
如果您的代码已使用非集合类,可以继续使用它们。如果编写新的类型安全集合为您的数据类型类别,建议您使用较新的基于模板的类。
集合形状
集合类表示为其 “shape”并通过其元素的类型。 形状引用组织并收集存储对象的方法。 MFC 提供三个基本的集合形状:列表,数组和映射 (也称为字典)。 可以选择最适合您的特定编程的问题的集合形状。
三提供的集合形状中的每一本主题后面简要介绍。 若要比较形状的功能可帮助您确定哪些为您的程序最好,请参见 Recommendations for Choosing a Collection 类。
列表
,当双向链接列表,列出类提供了排序,非索引列表元素,实现。 列出具有 “开头”, “尾”,以及添加或移除元素从头或尾或插入或删除元素在中间名,非常快。
数组
数组类提供动态调整大小的,有序的、 Integer 索引的对象数组。
映射 (也称为字典)
映射是关联的键值对象与对象的集合。
基于模板的集合类
最简单的方法实现包含任何类型的对象的类型安全的集合将使用一个基于 MFC 模板的类。 有关这些类的示例,请参见 MFC 示例 集合。
下表列出了 MFC 基于模板的集合类。
集合模板类
集合的内容 |
数组 |
列表 |
映射 |
---|---|---|---|
任何类型的对象。 |
CArray |
CList |
CMap |
指针的集合对任何类型的对象 |
CTypedPtrArray |
CTypedPtrList |
CTypedPtrMap |
不基于模板的集合类。
如果您的应用程序中使用 MFC 的非类,可以继续使用它们。 但是,对于新集合,建议您使用基于模板的类。 下表列出了不基于模板的 MFC 集合类。
非集合类
数组 |
列表 |
映射 |
---|---|---|
CObArray |
CObList |
CMapPtrToWord |
CByteArray |
CPtrList |
CMapPtrToPtr |
CDWordArray |
CStringList |
CMapStringToOb |
CPtrArray |
|
CMapStringToPtr |
CStringArray |
|
CMapStringToString |
CWordArray |
|
CMapWordToOb |
CUIntArray |
|
CMapWordToPtr |
MFC 集合。 Recommendations for Choosing a Collection 类 的类表格的特性描述 MFC 集合类根据这些特征 (除了形状):
类是否使用 C++ 模板
是否可序列化集合中存储的元素
集合中存储的元素是否可以为诊断转储。
集合是否为类型安全的