Коллекции

Библиотека классов Microsoft Foundation предоставляет классы коллекций для управления группами объектов. Эти классы имеют два типа:

Примечание.

Если код уже использует классы коллекции nontemplate, их можно продолжать использовать. Если вы пишете новые классы коллекций, безопасные для типов данных, рекомендуется использовать более новые классы на основе шаблонов.

Фигуры коллекции

Класс коллекции характеризуется его "фигурой" и типами его элементов. Фигура ссылается на то, как объекты организованы и хранятся в коллекции. MFC предоставляет три основных фигуры коллекции: списки, массивы и карты (также известные как словари). Вы можете выбрать фигуру коллекции, которая наиболее подходит для конкретной задачи программирования.

Каждая из трех предоставленных фигур коллекции описывается кратко далее в этом разделе. Чтобы сравнить функции фигур, которые помогут вам решить, какой вариант лучше всего подходит для вашей программы, см. Рекомендации для выбора класса коллекции.

  • Список (List)

    Класс списка предоставляет упорядоченный неиндексируемый список элементов, реализованный в виде двуразового связанного списка. Список содержит "голову" и "хвост", а также добавление или удаление элементов из головы или хвоста, а также вставка или удаление элементов в середине очень быстро.

  • Массив

    Класс массива предоставляет динамический размер, упорядоченный и целый индексируемый массив объектов.

  • Карта (также известная как словарь)

    Карта — это коллекция, которая связывает ключевой объект с объектом значения.

Классы коллекции на основе шаблонов

Самый простой способ реализовать типобезопасную коллекцию, содержащую объекты любого типа, — использовать один из классов на основе шаблонов MFC. Примеры этих классов см. в примере MFC COLLECT.

В следующей таблице перечислены классы коллекций на основе шаблонов MFC.

Классы шаблонов коллекции

Содержимое коллекции Массивы Списки Карты
Коллекции объектов любого типа CArray CList CMap
Коллекции указателей на объекты любого типа CTypedPtrArray CTypedPtrList CTypedPtrMap

Классы коллекции, не основанные на шаблонах

Если приложение уже использует классы, не относящиеся к MFC, их можно продолжать использовать. Однако для новых коллекций рекомендуется использовать классы на основе шаблонов. В следующей таблице перечислены классы коллекций MFC, которые не основаны на шаблонах.

Классы коллекции nontemplate

Массивы Списки Карты
CObArray CObList CMapPtrToWord
CByteArray CPtrList CMapPtrToPtr
CDWordArray CStringList CMapStringToOb
CPtrArray CMapStringToPtr
CStringArray CMapStringToString
CWordArray CMapWordToOb
CUIntArray CMapWordToPtr

Характеристики таблицы классов коллекций MFC в Рекомендации для выбора класса коллекции описывают классы коллекции MFC с точки зрения этих характеристик (кроме фигуры):

  • Использует ли класс шаблоны C++

  • Можно ли сериализовать элементы, хранящиеся в коллекции

  • Можно ли поместить эти элементы в дамп для диагностики

  • Является ли коллекция типобезопасной

Что вы хотите сделать

Общие задачи класса коллекции

Задачи класса коллекции на основе шаблонов

Доступ к членам коллекции (на основе шаблона или нет)

См. также

Основные понятия
Общие разделы по MFC