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

#include <classlib\binimp.h>

#include "student2.h"

// Косвенное бинарное дерево typedef TIBinarySearchTreeImp<STUDENT> STUDENT_TREE;

// Итератор BIDS

typedef TIBinarySearchTreeIteratorImp<STUDENT> STUDENT_TREE_ITERATOR;

// Размещение элементов в контейнере void WriteStudents(STUDENTJTREE&);

int main() ( • :

STUDENT_TREE Students;

students.Add(new STUDENT("Cindy Smith", 3.0));

students.Add(new STUDENT("Edith VandeHaar", 2.0)It-students.Add(new STUDENT ("Andy Brown", 4.0.));

students.Add(new STUDENT("Barry Jones", 3.5));

students. Add (new STUDENT ("Dina Carlson", 2.5"));

students.Add(new STUDENT("Frank Slide", 2.0));

cout « "Бинарное дерево из " « students.GetItemsInContairferО ^>« " студентов:" « endl;

WriteStudents(students) ;

students.Flush(); // Уничтожение элементов.

return 0;

}

void WriteStudents(STUDENT__TREE Sstudents) (

STUDENT_TREE__ITERATOR iterator(students) ;

STUDENT *s;

cout « setiosflags(ios::fixed I ios::left) « setprecision(l) ;

while (iterator) {

s = iterator.Current() ;

cout « " " « setw(17) « s->Get!d() « " " « s->GetGrade() « endl;

++iterator;

} }

Вывод программы из листинга 18.14 будет следующим:

Бинарное дерево из 5 студентов:

Edith VandeHaar 0.0

Cindy Smith 1.5

Andy Brown 2.0 '

Barry Jones 3.0

Dina Carlson 3.5

Заметим, что итератор проходит дерево слева направо (возрастающий порядок).