Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #74, ФЕВРАЛЬ 2005 г.

Файлы в ассортименте

Диман Dr.X (xdiman@mail.ru)

Хакер, номер #074, стр. 074-108-2


STL - Standard Template Library

STL - это библиотека контейнерных классов, которая включает векторы, списки, стеки, очереди и деки, а также ряд алгоритмов общего назначения. Она была разработана сотрудниками компании Hewlett-Packard А.А. Степановым и М. Ли. После внесения незначительных поправок Комитет по стандартизации С++ принял решение о включении STL в состав языка. Для начала приведу краткий обзор этой библиотеки. Ядро STL составляют три типа шаблонных классов: алгоритмы, контейнеры и итераторы. Алгоритмы - это классы с использованием объектов-функций, то есть объектов, для которых перегружен оператор вызова функции. Контейнеры используются для хранения информации, а итераторы - для обеспечения произвольного доступа к элементам контейнера. Существуют два типа контейнеров: последовательные и ассоциативные. Мы воспользуемся ассоциативным, позволяющим получить доступ к ячейке по уникальному ключу.

Ассоциативные контейнеры

Если последовательные контейнеры предназначены для хранения элементов и доступа к ним с помощью индексов или итераторов, то в ассоциативных контейнерах доступ к элементам осуществляется с помощью ключей. Всего существуют четыре типа ассоциативных контейнеров: map (карта), multimap (мультикарта), set (множество), multiset (мультимножество). Все они хранятся в заголовочном файле map.h. Опишу подробнее каждый контейнер. Карта - это ассоциативный контейнер, предоставляющий доступ к элементам по уникальным ключам. Использование двух или более одинаковых ключей не допускается. Для добавления элементов в карту можно использовать следующую конструкцию:

MyMap [key] = value;

Также для этого существуют функции push_back и insert. В мультикарте, в отличие от карты, допускается использование неуникальных ключей. Множество является контейнером, хранящим только уникальные ключи, а мультимножество, по аналогии с мультикартой - неуникальные. В нашем сортировщике ассоциативный контейнер используется следующим образом: критерии сортировки служат ключами; значения, с этим ключами связанные, являются названиями каталогов и подкаталогов, и их последний байт показывает приоритет сортировки. Затем нахождением максимального приоритета определяется путь, в который будет помещен файл.

Назад на стр. 074-108-1  Содержание  Вперед на стр. 074-108-3