Поделиться через


Коллекции

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

Замечание

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

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

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

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

  • Список

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

  • Массив

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

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

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

Классы коллекции 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