    После создания контейнера вы можете запоминать и читать из него данные с 
помощью вызовов одной или нескольких функций-членов, которые частично могут 
наследоваться из классов-предков. В листинге 16.1 демонстрируются некоторые 
функции, используемые для контейнера TStackAsVector. 

    ЗАМЕЧАНИЕ 

    Вы можете скомпилировать STACKED. CPP как DOS- или Easy Win-приложение, 
Однако в обоих случаях программу следует скомпоновать вместе с библиотекой 
скомпилированных классов BIDSx.LIB (x — модель памяти); 

    bcc stacked bidss.lib 

    BIDS расшифровывается как Borland International Data Structure (структура 
данных Borland International). Для каждой модели памяти существует свой файл, 
идентифицируемый последней буквой имени файла: S (small -малая), С (compact — 
компактная), М (medium — средняя), L (large — большая), Н (huge — огромная) и 
Hflat — линейная 32-битовая). 
    Для компиляции программы как EasyWin-приложения щелкните правой кнопкой 
мыши или нажмите <ALT+F10> и выберите TargetExpert, Установите Target Type 
равным EasyWin и задайте Large или Small Target Model (другие модели памяти 
тоже годятся, однако для Windows-приложений лучше всего подходит Large). 
Убедитесь, что помечена ячейка Class Library в Standard Libraries. Прочие 
примеры программ в этом разделе компилируются аналогично. 

    Листинг 16.1.   STACKED.CPP (демонстрация TStackAsVector) 

    1:	#include <iostream.h> 
    2:	#include <classlib\stacks.h> 
    3: 
    4:	#define TRUE 1 
    5:	#define FALSE 0                 
    6:	
    7:	// Создать глобальный контейнерный объект 
    8:	TStackAsVector<double> myStack(100);     
    I?!	. int nain()        
    11;	{                  
    12:	double d;      
    13:	int done = FALSE; 
    14: 
    15:	// Запросить значения и поместить их в стек 
    16:	while (Idone && !myStack.IsFull()) { 
    17:	  cout « "Enter double value (0.0 to quit): "; 
    18:	  cin » d;       // Ввести значение пользователя 
    19:	  if (d == 0.0) 
    20:	   done = TRUE;    // Закончить цикл while
    21:	else 
    22:	   myStack.Push(d); // Поместить d в стек 
    23:	} 
    24 
    25	// Отобразить информацию о стеке 
    26	int n = myStack.GetITemsInContainer();            
    27	cout « endl « "Number of objects: " « n « endl;   
    28	if (n > 0) 
    29	   cout « "Top of stack: " « myStack.Top() « endl « endl; 
    30 
    31	// Извлечь значения из стека и отобразить их 
    32	while (!myStack.IsEmpty()) 
    33	  cout « myStack.Pop() « endl; 
    34 
    35	return 0; 
    36	}

    Запустите программу STACKED на выполнение и введите несколько вещественных 
значений с плавающей запятой. Если вы введете 0, программа отобразит число 
элементов, запомненных в стеке, и значение, находящееся в верхушке стека. В 
программе извлекаются и отображаются значения из стека, что опорожняет его 
перед завершением демонстрации. Поскольку структура данных стека основана на 
принципе "последним вошел — первым вышел", значения будут выводиться в 
обратном порядке. На рис. 16.1 приводятся результаты работы программы:	


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