Глава 18. Классы-контейнеры_________________________________505

Объекты, содержащиеся в стеке, должны поддерживать операции < и ==.

Для использования стеков библиотеки STL в исходный файл необходимо поместить заголовочный файл stack.h и заголовочный файл для соответствующего контейнера — vector.h, deque.h или list.h.

Для объявления стека необходимы два шаблона параметра: тип объекта, который должен храниться в стеке и класс-контейнер, который должен быть использован при реализации стека.

typedef stack<STUDENT, vector<STUDENT» STUDENT_STACK;

STUDENT_STACK studentStackl;

stack<STUDENT,list<STUDENT> > student3tack2;

Стек имеет несколько функций-членов, empty () возвращает булеву переменную, принимающую значение истина, если. в стеке нет элементов, size о возвращает число элементов в стеке, top() возвращает ссылку на верхний элемент в стеке, pop о возвращает верхний элемент, a push о помещает заданный объект на вершину стека.

Очередь

Очередь организована по принципу FIFO: "первым пришел — первым вышел" (First In, First Out). Элементы удаляются из очереди в том же порядке, в котором они были туда помещены. Элементы добавляются в конец очереди и удаляются из ее начала. Так же как и стек, очередь библиотеки STL — это контейнер-адаптер.

Для использования очередей в исходный файл нужно поместить заголовочный файл queue.h и заголовочный файл для контейнера, необходимого при реализации очереди — deque.h или list.h.

Объявление объектов типа очередь очень похоже на таковое для стека.

typedef queueOTUDENT, deque<STUDENT» STUDENT_QUEUE;

STUDENT_QUEUE studentQueuel;

queueOTUDENT, list<STUDENT» studentQueue2 ;

У очереди шесть функций-членов: empty () возвращает истину, если в очереди нет элементов; size() возвращает число элементов в очереди; front о возвращает ссылку на первый элемент очереди; back о — на последний элемент; push() помещает заданный объект в конец очереди; наконец рор() удаляет элемент из конца очереди.

ftdefine RWSTD_NO_NAMESPACE ^include <iostream.h>

#include <deque.h>

# include <queue.h>

#include "student3.h"