Класс 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, то массив типобезопасным.Однако если использовать его для хранения символов, его безопасность типов менее обязательно.
См. также
Задачи
Для доступа ко всем элементам коллекции