T
his
is the long-awaited second edition of the
STL
Tutorial and Reference Guide
. Its predecessor was published in
1995, shortly after the STL had been adopted as part of the C++ standard,
and was the first authoritative books about the STL. David Musser, who
is one of the authors, is also one of the originators of the STL.
In
those six years since the first edition came out, a number of excellent
STL books have been published by other brilliant authors, most notably
Matthew Austern's
Generic Programming and the STL
and Bill Plauger's
The
C++ Standard Template Library
as well as Scott Meyers's
Effective
STL
. Yet the
STL Tutorial and Reference Guide
continues to stand
out as one of the best tutorials on the STL. By comparison, the other titles
are either special-purpose books about the implementation of the STL (e.g.,
Bill Plauger) or traps and pitfalls in the STL (e.g., Meyers), or else
they present the STL from a mainly conceptual point of view as an example
of generic programming. All these books are wonderful and invaluable, but
they are not tutorials and cannot be recommended to beginners.
STL
Tutorial and Reference Guide
is written for programmer who have grasped
the basic concepts of C++ and want to learn about its main library classes?namely
the containers and algorithms that are known as the STL. Guru knowledge
of C++ is not required. The STL makes heavy use of C++ templates and practically
all template features are used inside the STL. As a user of the STL, such
profound knowledge of templates is not required for reading this book.
In fact, crucial features of C++ templates are described in one of the
early sections long before the book delves into any details of the STL.
This
book falls into three major parts:
-
An introduction
to the STL that describes all of its components
-
Sample
programs that demonstrate how to use the STL in practice
-
A reference
guide that lists all APIs along with a brief description
The most
interesting part of
STL Tutorial and Reference Guide
is the introduction
to the STL. It begins with an explanation of what generic programming is
and why the STL differs from classic object-oriented libraries. It then
goes through all the components of the STL and explains them one after
the other. The second part puts all the pieces together and discusses eight
sample programs. The size and style of the samples is ideal for novice
readers?neither too primitive nor too detailed?and yet you find examples
of basically everything you need to know, from use of container and algorithms
up to implementation of a user-defined iterator type. The reference part
is not overly exciting; it is what you would find in every online manual
of the STL anyway (see SGI's
Standard
Template Library Programmer's Guide
for an HTML version).
Those
readers who are familiar with the first edition will find a few new things
in the second edition. Besides covering updates in the STL, there are some
new sections in areas where the first edition was extremely brief. For
example, there is more on function object types and allocators than before.
Two further sample programs are discussed and a reference guide to the
standard string classes is provided in an additional appendix.
The
STL
Tutorial and Reference Guide
is still one of the best introductions
to the STL. Even though the first edition is only slightly outdated, the
second edition is unreservedly recommendable as a tutorial to the STL.
Programmers who have already been using the STL might find the book too
basic, but it is a very accessible and practical first-time exposition
for novices.
Angelika
Langer
develops and teaches classes on Java, C++, multithreading, and
internationalization. She is an internationally recognized speaker and
served on the ANSI/ISO C++ Committee from 1993 to 1998.
Klaus Kreft
is a software architect and senior consultant with 15+ years of experience
in industrial software development. He currently works for Siemens Business
Services in Germany. Langer and Kreft are authors of "Standard C++ IOStreams
and Locales" (Addison-Wesley, 2000) and are columnists for the C/C++ Users
Journal.
|