集合
Microsoft 基础类 (MFC) 库提供集合类管理对象组成的组。 这些类包括两种类型:
从 C++ 模板的集合类创建
集合类不从模板创建
备注
如果代码已使用个集合类,则可以继续使用它们。如果在编写新类型安全"的集合类提供自己的数据类型,但我们推荐使用较新的基于模板的类。
集合形状
集合类加上其“shape”和通过其元素类型。 形状引用对象由集合组织并存储的情况下。 MFC 提供三个简单的集合形态:列表、数组以及映射字典 (也称为)。 可以选取最适合于特定编程问题的集合形态。
三提供的集合形态每个本主题后面简要介绍。 若要比较形状的功能帮助您确定要对程序是最好,请参见 关于选择集合类的建议。
List
列表类提供元素的排序,为列表,实现为双向链接列表。 列表具有“头”,而且“尾”,并添加或移除元素。开头或末尾或插入或删除元素在中间,非常快。
数组
数组类提供动态调整大小中,排序和整数索引的数组对象。
映射 (也是一个字典)
映射是与的主要对象的值对象的集合。
基于模板的集合类
简单的方法实现包含任何类型的对象类型安全的集合将使用某个基于 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 集合在 关于选择集合类的建议 的类特性的表介绍 MFC 集合类。这些特性 (除外) 形状:
类是使用 C++ 模板
在集合中的元素是可序列化
集合中存储的元素是否可以为诊断转储
集合是否是类型安全