Глава 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;