Рекомендации по выбору класса коллекции
В этой статье созданное содержит подробные сведения, помогающие выбрать класс коллекции для определенного приложения.
Выбранная класса коллекции зависит от нескольких факторов, включая:
Функции фигуры класса: порядок, индексирование и производительности, как показано в таблице Функции форма коллекции далее в этом разделе
Используется ли класс шаблоны 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, массив является типобезопасным. Однако при использовании ее для хранения символов, его безопасность типов менее обязательно.
См. также
Задачи
Доступ ко всем членам коллекции