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

h04471.jpg

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: " 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;