The
goal of this chapter, and the previous one, was to give you a
programmer’s-depth understanding of the containers and algorithms in the
Standard Template Library. That is, to make you aware of and comfortable enough
with the STL that you begin to use it on a regular basis (or at least, to think
of using it so you can come back here and hunt for the appropriate solution).
It is powerful not only because it’s a reasonably complete library of
tools, but also because it provides a vocabulary for thinking about problem
solutions, and because it is a framework for creating additional tools.
Although
this chapter and the last did show some examples of creating your own tools, I
did not go into the full depth of the theory of the STL that is necessary to
completely understand all the STL nooks and crannies to allow you to create
tools more sophisticated than those shown here. I did not do this partially
because of space limitations, but mostly because it is beyond the charter of
this book; my goal here is to give you practical understanding that will affect
your day-to-day programming skills.
There
are a number of books dedicated solely to the STL (these are listed in the
appendices), but the two that I learned the most from, in terms of the theory
necessary for tool creation, were first,
Generic
Programming and the STL
by Matthew H. Austern, Addison-Wesley 1999 (this also covers all the SGI
extensions, which Austern was instrumental in creating), and second (older and
somewhat out of date, but still quite valuable),
C++
Programmer’s Guide to the Standard Template Library
by Mark Nelson, IDG press 1995.