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


Класс Recommendations for Choosing a Collection

Этой статье содержит подробные сведения, предназначенная для проще выбирать класс коллекции для определенного приложения.

Выбор класса коллекции зависит от нескольких факторов, в том числе:

  • Функции фигуры класса: порядок, индексирование и производительность, как показано в таблице функции фигуры коллекции далее в этом разделе

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

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

  • Ли элементы, хранящиеся в коллекции можно сбросить для диагностики

  • Ли коллекция типобезопасна

В следующей таблице собраны характеристики, функции фигуры коллекции, доступных фигур коллекции.

  • Столбцы, 2 и 3 описывают характеристики каждый фигуры упорядочение и доступа.В таблице «упорядоченная» термин означает, что порядок, в котором представлены и удалении элементов определяет их порядок в коллекции. оно не означает, что элементы сортируются на их содержимое.Термин «индексировала» означает, что элементы в коллекции могут быть восстановлены индексом целого числа, как элементы в типичном массиве.

  • Столбцы, 4 и 5 описывают производительность каждой из фигур.В приложениях, требующих много вставок в коллекцию, скорость вставки может быть особенно важна. для других приложений, скорость поиска может оказаться важнее.

  • Описывает столбец 6, позволяет ли каждая фигура повторяющиеся элементы.

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

Фигура

Ordered?

Индексирован?

Элемент insert

Поиск указанного элемента

Повторяющиеся элементы?

List

Да

Нет

Голодайте

Медленное

Да

Массив

Да

Int

Медленное

Медленное

Да

Сопоставление

Нет

Клавиша

Голодайте

Голодайте

Нет (клавиши) да (значение)

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

Характеристики классов коллекций MFC

Класс

Использует C++

шаблоны

Может быть

Сериализуются

Может быть

сброшено

Is

поворот

CArray

Да

Да 1

Да 1

Нет

CByteArray

Нет

Да

Да

Да 3

CDWordArray

Нет

Да

Да

Да 3

CList

Да

Да 1

Да 1

Нет

CMap

Да

Да 1

Да 1

Нет

CMapPtrToPtr

Нет

Нет

Да

Нет

CMapPtrToWord

Нет

Нет

Да

Нет

CMapStringToOb

Нет

Да

Да

Нет

CMapStringToPtr

Нет

Нет

Да

Нет

CMapStringToString

Нет

Да

Да

Да 3

CMapWordToOb

Нет

Да

Да

Нет

CMapWordToPtr

Нет

Нет

Да

Нет

CObArray

Нет

Да

Да

Нет

CObList

Нет

Да

Да

Нет

CPtrArray

Нет

Нет

Да

Нет

CPtrList

Нет

Нет

Да

Нет

CStringArray

Нет

Да

Да

Да 3

CStringList

Нет

Да

Да

Да 3

CTypedPtrArray

Да

Зависитые 2

Да

Да

CTypedPtrList

Да

Зависитые 2

Да

Да

CTypedPtrMap

Да

Зависитые 2

Да

Да

CUIntArray

Нет

Нет

Да

Да 3

CWordArray

Нет

Да

Да

Да 3

1.Для сериализации необходимо явно вызывать функцию Serialize объекта коллекции. чтобы сбросить необходимо явно вызывать его функция Dump.Нельзя использовать форму ar << collObj для сериализации или форму dmp<< collObj, который необходимо сбросить.

2.Зависит от Serializability базовый тип коллекции.Например, если типизированный массив указателей на основе CObArray, он является сериализуемым; если на основании CPtrArray он не является сериализуемым.В общем случае классы «Ptr» не может быть сериализован.

3.Если помечены да в этом столбце, предоставленный класс коллекции, использующий его nontemplate типобезопасное как предполагалось.Например, если хранить байты в CByteArray, то массив типобезопасным.Однако если использовать его для хранения символов, его безопасность типов менее обязательно.

См. также

Задачи

Для доступа ко всем элементам коллекции

Основные понятия

Коллекции

Шаблон- на основе классов

Практическое руководство. Создание типобезопасной коллекции