收集

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++模板

  • 是否可以序列化集合中存储的元素

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

  • 集合是否为类型安全

你想要做什么

常规 Collection-Class 任务

Template-Based Collection-Class 任务

访问集合的成员(Template-Based 或不访问)

另请参阅

概念
常规 MFC 主题