Программирование на языке MFC

Мой второй блог в серии программирования

Типы коллекций


Давайте рассмотрим, какие типы коллекций поддерживаются в MFC. Надеюсь, что понимание принципов построения данных поможет не только более эффективно использовать включенные в MFC организации данных, но и строить свои организации дан­ных, которые позволят с максимальной эффективностью решить поставленные перед программой задачи.

Но прежде чем мы перейдем к рассмотрению непосредственно организаций данных, мне хотелось бы рассмотреть, какие требо­вания могут быть предъявлены к объектам, предназначенным для работы с коллекциями.

Во-первых, они как и все другие объекты должны «уметь» соз­давать и уничтожать коллекции. Эти задачи должны, разумеется, решать конструкторы и деструкторы объектов.

Во-вторых, объекты должны иметь возможность добавить в кол­лекцию новый элемент и, соответственно, удалить ненужный эле­мент. Иногда необходимо, чтобы элемент добавлялся не в начало и не в конец коллекции, а в произвольное место. Желательно, что­бы добавление занимало как можно меньше времени и требовало бы минимальных усилий.

В-третьих, необходимо иметь возможность обратиться к конкрет­ному элементу коллекции и получить из него данные.

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

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

Мне бы хотелось, чтобы читатель запомнил эти требования к коллекциям, так как впоследствии придется неоднократно вспо­минать о них при проведении анализа классов, предназначенных для работы с коллекциями.

Библиотека MFC предоставляет программисту три группы гото­вых к работе классов – классы для работы с массивами, классы для работы со списками и классы для работы с хэш-таблицами (ассоциативными списками). Каждая из этих групп содержит не­сколько классов, предназначенных для работы с данными конкрет­ного типа. О назначении этих классов я расскажу при рассмотре­нии принципов работы каждой группы классов.