

Программирование на языке MFC
Мой второй блог в серии программирования
Типы коллекций
Давайте рассмотрим, какие типы коллекций поддерживаются в MFC. Надеюсь, что понимание принципов построения данных поможет не только более эффективно использовать включенные в MFC организации данных, но и строить свои организации данных, которые позволят с максимальной эффективностью решить поставленные перед программой задачи.
Но прежде чем мы перейдем к рассмотрению непосредственно организаций данных, мне хотелось бы рассмотреть, какие требования могут быть предъявлены к объектам, предназначенным для работы с коллекциями.
Во-первых, они как и все другие объекты должны «уметь» создавать и уничтожать коллекции. Эти задачи должны, разумеется, решать конструкторы и деструкторы объектов.
Во-вторых, объекты должны иметь возможность добавить в коллекцию новый элемент и, соответственно, удалить ненужный элемент. Иногда необходимо, чтобы элемент добавлялся не в начало и не в конец коллекции, а в произвольное место. Желательно, чтобы добавление занимало как можно меньше времени и требовало бы минимальных усилий.
В-третьих, необходимо иметь возможность обратиться к конкретному элементу коллекции и получить из него данные.
В-четвертых, необходимо иметь возможность перебрать все элементы коллекции для того, скажем, чтобы составить полную сводку из хранящихся в элементах данных.
В-пятых, желательно также минимизировать потери памяти, неизбежные при создании сложных организаций данных.
Мне бы хотелось, чтобы читатель запомнил эти требования к коллекциям, так как впоследствии придется неоднократно вспоминать о них при проведении анализа классов, предназначенных для работы с коллекциями.
Библиотека MFC предоставляет программисту три группы готовых к работе классов – классы для работы с массивами, классы для работы со списками и классы для работы с хэш-таблицами (ассоциативными списками). Каждая из этих групп содержит несколько классов, предназначенных для работы с данными конкретного типа. О назначении этих классов я расскажу при рассмотрении принципов работы каждой группы классов.
