Файлы в ассортименте Диман 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. В мультикарте, в отличие от карты, допускается использование неуникальных ключей. Множество является контейнером, хранящим только уникальные ключи, а мультимножество, по аналогии с мультикартой - неуникальные. В нашем сортировщике ассоциативный контейнер используется следующим образом: критерии сортировки служат ключами; значения, с этим ключами связанные, являются названиями каталогов и подкаталогов, и их последний байт показывает приоритет сортировки. Затем нахождением максимального приоритета определяется путь, в который будет помещен файл. |