Глава 18. Классы-контейнеры_________________________________447
ftinclude <iostream.h>
#include <iomanip.h> ftinclude <classlib\deques.h>
#include "studentl.h"
// Двусторонняя очередь содержит указатели на объекты STUDENT. typedef TIDequeAsDoubleList<STUDENT> STUDENT_DEQUE;
// итератор BIDS typedef TIDequeAsDoubleListIterator<STUDENT> STUDENT_DEQUE_ITERATOR;
// Вывод объектов STUDENT в контейнер void WriteStudents(STUDENT_DEQUE&) ;
int mainO
{
STUDENT_DEQUE Students;
*
// Вставка с головы. students.PutLeft(new STUDENT("JohnNewton", 1.0));
students.PutLeft(new STUDENT("DeanBrown", 2.0));
// Вставка с хвоста. students.PutRight(new STUDENT("CarlBishop", 3.0));
students.PutRight(new STUDENT("GaryCook", 4.0));
cout « "Inital deque of " « students.GetItemsInContainerO ^>« "students: " « endl;
WriteStudents(students) ;
cout « "The student on the left end (head) is: " b« students.PeekLeft()->GetId() « endl;
cout « "The student on the right end (tail) is: " ^« students.PeekRight()->GetId() « endl;
STUDENT *sp;
delete students.GetLeftО; // Удаляем самый левый
//элемент и уничтожаем его. sp = students. GetRight () ; //.Удаляем самый правый элемент. students.PutLeft(sp); // Вставляем с головы. cout « "After removing left element and placing head at tail:" « endl;
WriteStudents(students);
students.Flush(); //Уничтожение элементов.
return 0;
t
void WriteStudents(STUDENT_DEQUE Sstudents) {
STUDENT_DEQUE_ITERATOR iterator(students) ;
STUDENT *s;