Genealogy Display Program: A Larger Example of Use of STL

David R. Musser

The SIGACT Theoretical Computer Science Genealogy lists information on earned doctoral degrees (adviser, university, and year) of theoretical computer scientists worldwide. The website provides a convenient means of looking up individuals a few at a time. To get the "big picture," though, it's useful to display the entire forest of academic ancestor trees represented in the TCS Genealogy data base. The treeform program does that, working from an ascii file version (72k) of the data (obtained from http://hercule.csci.unt.edu/genealogy/textfile.html and slightly updated) and producing a listing (102K) that displays the tree structure using indentation. The students of each Ph.D advisor are listed in order of date of the students' Ph.Ds (oldest first).

The output contains many fascinating details, but it is also instructive to examine the program to see how it combines several components of STL (vectors, maps, multisets, the generic find algorithm, and library- and user-defined function objects) to do the job efficiently and succinctly.

This program has been compiled and executed successfully with the GNU C++ compiler (version 2.7.2), the Apogee apCC compiler (SUN Unix, version 3.0), and the IBM Visual Age C++ compiler (Windows 95, version 3.5). Note that one header file needed, bstring.h, is not part of STL but is available here. (If you already have the STL version from the Rensselaer ftp site, bstring.h is included.)