Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Библиотека классов 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++
Можно ли сериализовать элементы, хранящиеся в коллекции.
Можно ли снимать дамп элементов, хранящихся в коллекции, для диагностики?
Является ли коллекция типобезопасной