"Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT" - читать интересную книгу автора (Фролов Александр Вячеславович, Фролов...)
Массивы, списки и словари
В состав MFC включен целый набор классов, предназначенных для хранения информации в массивах, списках и словарях. Все эти классы наследованы от базового класса CObject.
Не смотря на то, что в языке Си определено понятие массива, классы MFC обеспечивают вам более широкие возможности. Вы, например, можете динамически изменять размер массива, определенного с помощью соответствующего класса.
Для представления массивов предназначены следующие классы.
Класс
Массив содержит
CByteArray
Байты
CDWordArray
Двойные слова
CObArray
Указателей на объекты класса CObject
CPtrArray
Указателей типа void
CStringArray
Объекты класса CString
CUIntArray
Элементы класса unsigned integer или UINT
CWordArray
Слова
Фактически все перечисленные в таблице классы различаются только типом элементов массива. Поэтому вместо использования этих классов гораздо проще воспользоваться шаблоном CArray. Используя шаблон CArray, вы можете определять массивы из элементов любых типов и классов. Шаблон CArray наследует свойства класса CObject.
Для построения массивов вы можете также воспользоваться шаблоном CTypedPtrArray. Этот шаблон не наследуется от базового класса CObject, поэтому использовать методы класса CObject для него нельзя.
Для решения многих задач используются такие структуры хранения данных, как списки. MFC включает ряд классов, наследованных от базового класса CObject, которые предоставляют программисту готовое средство для создания собственных списков. В этих классах определены все методы необходимые при работе со списками – добавление нового элемента, вставка нового элемента, определение следующего или предыдущего элемента в списке, удаление элемента и т. д.
Класс
Список содержит элементы
CObList
Указатели на объекты класса CObject
CPtrList
Указатели типа void
CStringList
Объекты класса CString
Перечисленные в таблице классы позволяют построить списки из элементов любых типов и объектов любых классов. Однако удобнее пользоваться шаблоном CList, также наследованным от базового класса CObject. Для построения списков вы можете также использовать шаблон CTypedPtrList. Этот шаблон не наследуется от базового класса CObject.
В библиотеке классов MFC определена еще одна группа классов, позволяющая создавать словари. Словарь представляет собой таблицу из двух колонок, устанавливающую соответствие двух величин. Первая величина представляет ключевое значение и записывается в первую колонку таблицы, а вторая связанное с ней значение, хранящееся во второй колонке. Словарь позволяет добавлять в него пары связанных величин и осуществлять выборку значений по ключевому полю.
Класс
Ключевое поле
Поле, связанное с ключевым
CMapPtrToPtr
Указатель типа void
Указатель типа void
CMapPtrToWord
Указатель типа void
Слово
CMapStringToOb
Объекты класса CString
Указатели на объекты класса CObject
CMapStringToPtr
Объекты класса CString
Указатель типа void
CMapStringToString
Объекты класса CString
Объекты класса CString
CMapWordToOb
Слово
Указатели на объекты класса CObject
CMapWordToPtr
Слово
Указатель типа void
Вы можете создавать словари, имеющие поля любых типов и классов, если воспользуетесь шаблоном CMap. Шаблон CMap наследуется от базового класса CObject. Для построения словарей можно также использовать шаблон CTypedPtrMap. Шаблон CTypedPtrMap не наследуется от базового класса CObject.