    В целом имена контейнерных классов имеют следующий вид:	
   
    Т [префикс] [АТД] [АsФСД] [суффикс] 

    Все имена классов начинаются с буквы Т (тип). Необязательный префикс 
указывает на способ запоминания данных — например, сортируются ли объекты (S) 
или же запоминаются косвенно в виде указателей (I). Затем следует такой АТД, 
как массив (Array) или стек (Stack). Если за ним следует слово As, значит 
контейнер реализован на основе заданной ФСД, которая может быть, к примеру, 
списком (List), двусвязным списком (DoubleList) или другим фундаментальным 
типом данных. Наконец, необязательный параметр "суффикс" ссылается на тип 
сопутствующего класса. Некоторые классы, к примеру, заканчиваются словом 
Iterator, означающим, что этот класс выполняет итерационные действия над 
данными в контейнере.	, 
    Однако не все классы в библиотеке твердо придерживаются этих соглашений 
именования. Некоторые классы даже не являются контейнерными — они могут быть, 
к примеру, фундаментальными структурами, использующимися для реализации 
контейнеров. Другие классы играют просто вспомогательную роль. Вы также не 
найдете абсолютно всех возможных комбинаций АТД и ФСД. Например, не существует 
класса TStackAsHashTable, поскольку бессмысленно реализовать стек (тип данных 
с последовательным доступом) с помощью хэш-таблицы (структура данных с 
произвольным доступом). 
    В табл. 16.1 перечислены библиотечные абстрактные типы данных и 
соответствующие им заголовочные файлы, а также фундаментальные структуры 
данных, используемые для реализации каждого контейнера. Например, Deque может 
реализоваться как DoubleList или Vector. Исходя из таблицы, можно предположить 
существование контейнерных классов с именами TDequeAsDoubleList и 
TDequeAsVector. Можно также заключить, что класса TDequeAsHashTable 
не существует. Ни один контейнер не использует структуру BinarySearchTree. 

    Таблица 16.1. Абстрактные типы данных 

                        АТД 		Заголовочный 	Дерево 	  Двусвязный Хэш-	      Список    Вектор 
                                    	    файл 		двоичного список	       таблица
					поиска
    Array (Массив)		ARRAYS.H					           • 
    Bag (Мультимножество)	BAGS.H					                             • 
    Deque (Дек — очередь 
    с двусторонним доступом)	DEQUES.H		         •			           • 
    Dictionary (Словарь)	DICT.H			                                 • 
    Queue (Очередь)		QUEUES.H		         •			           • 
    Set (Множество)		SETS.H					                             • 
    Stack (Стек)		STACKS. H				               •	           • 

    В табл. 16.2 приводится та же информация, что и в табл. 16.1, с той 
лишь разницей, что в ней перечислены фундаментальные структуры данных и их 
заголовочные файлы. Например, в табл. 16.2 указывается, что только контейнер 
Stack может использовать List, следовательно, можно предположить существование 
в библиотеке класса с именем TStackList. Таблица также свидетельствует о том, 
что Vector — самая часто используемая фундаментальная структура, 
задействованная в шести различных типах контейнеров. 

    Таблица 16.2. Фундаментальные структуры данных 

               ФСД                    Заголовочный 	Array   Bag  Deque	Dictionary	  Queue  Set  Stack 
                                                 файл

    Дерево двоичного       BINIMP.H		 
    поиска
    Двусвязный список      DLISTIMP.H                                 •                                 •
   Хэш-таблица	         HASHIMP.H                                                 • 	
   Список	                           LISTIMP.H                                                                                           • 
   Вектор	                           VECTIMP.H	   •         •                                               •        •          • 


    428     Часть IV. Разработка приложений 
