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

// Передача функции сравнения через конструктор. priority_queue<STUDENT, vector<3TUDENT>, studentPQ4(GradeCompare) ;

// Инициализация приоритетной очереди элементами studentDeque3 //и передача функции сравнения. priority_queue<STUDENT, vector<STUDENT»

studentPQ5(studentDeque3.begin(), studentDeque3.end(), GradeCompare) ;

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

ttdefine RWSTD__NO_NAMESPACE ttinclude <iostream.h> #include <deque.h> ttinclude <queue.h> ttinclude "student3.h"

// Определение класса, из которого выводится функция сравнения

struct GRADE__COMPARE

{

bool operator()(const STUDENT &sl, const STUDENT &s2) const

{ return sl.GetGrade() < s2.GetGrade(); } };

typedef priority_queue<STUDENT, deque<STUDENT>, GRADE_COMPARE > STUDENT_PQ;

int main() (

STUDENT_PQ studentPQ;

student PQ.push(STUDENT("Abe Line", 3.2));

StudentPQ.push(STUDENT("John Brown", 2.0));

student PQ.push(STUDENT("Frank Coke", 2.5));

studentPQ.push(STUDENT("Sam Adit", 0.6));

studentPQ.push(STUDENT("Samual Cart", 4.0));

studentPQ.push(STUDENT("Ida Smith", 1.4));

studentPQ.push(STUDENT("Tom Johnson", 3.9));

studentPQ.push(STUDENT("Carl West", 2.6));

cout « "Приоритетная очередь студентов состоит из " ^« studentPQ.size() « " students.\n";

while(!studentPQ.empty()) {

cout « studentPQ.top() ;

studentPQ.pop() ;

) return 0;