Глава 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
Заметим, что итератор проходит дерево слева направо (возрастающий порядок).