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


Рекомендации по выбору класса коллекции

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

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

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

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

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

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

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

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

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

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

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

Функции форма коллекции

Фигура

Упорядоченный?

Индексный?

Вставьте элемент

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

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

List

Да

Нет

Быстрый

Будут

Да

Массив

Да

Int

Будут

Будут

Да

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

Нет

Ключом

Быстрый

Быстрый

Нет (ключи (да) значения)

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

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

Класс

Использует C 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, массив является типобезопасным. Однако при использовании ее для хранения символов, его безопасность типов менее обязательно.

См. также

Задачи

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

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

Коллекции

Классы на основе шаблонов

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