Microsoft基础类库提供用于管理对象组的集合类。 这些类分为两种类型:
注释
如果代码已使用非模板集合类,则可以继续使用它们。 如果为自己的数据类型编写新的类型安全集合类,建议使用基于模板的较新的类。
集合形状
集合类的特点是其“形状”及其元素的类型。 形状是指对象由集合组织和存储的方式。 MFC 提供三个基本集合形状:列表、数组和地图(也称为字典)。 可以选择最适合特定编程问题的集合形状。
本主题稍后将简要介绍这三个提供的集合形状中的每一个。 若要比较形状的功能以帮助确定最适合程序的功能,请参阅 “选择集合类的建议”。
列表
列表类提供一个有序的、非索引的元素列表,作为一个重复链接的列表实现。 列表具有“head”和“tail”,并从头或尾添加或删除元素,或者插入或删除中间的元素非常快。
数组
数组类提供对象的动态大小、有序和整数索引数组。
地图(也称为字典)
映射是将键对象与值对象关联的集合。
Template-Based 集合类
实现包含任何类型的对象的类型安全集合的最简单方法是使用基于 MFC 模板的类之一。 有关这些类的示例,请参阅 MFC 示例 COLLECT。
下表列出了基于 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++模板
是否可以序列化集合中存储的元素
是否可以转储存储在集合中的元素进行诊断
集合是否为类型安全