![]() |
|
Designing Components with the C++ STL, by Ulrich Breymann, is a first-rate computer-science introduction to the generic algorithms and data structures of the C++ Standard Template Libraries.
Designing Components with the C++ STL assumes knowledge of C++ syntax and template syntax, anticipating that you have probably seen the STL already and are ready for a mildly strenuous classic introduction, one based on applying fundamental algorithms of STL to the library's basic data entities. The deepest algorithmic water is reached dealing with associative arrays, matrices, and graphs.
The main virtue of this book is that it is enjoyable to read, in that it teaches simply, clearly, and at a uniform pace as befits a college text. It's also charmingly short for a work so intensely detailed. More breadth-exhaustive works exist; Designing Components with the C++ STL focuses on covering the critical middle with occasional excursions to the outer bounds.
In e-mail exchanges, Breymann, a professor of computer science and managing director of the Institute for Computer Science and Automation at the Hochschule, told me:
The actual speed of an application is important. E.g. using a vector<> or a string in an inappropriate way (causing many memory allocations/deletions) can slow a program. I do not want to go into these issues, because they are *very* dependent on the actual STL implementation used. Furthermore, I think this subject could fill a book, too (I have no intention to write it). Thus, algorithmic complexity is more important for me, and this is also a practical argument, as the run time measurement on p. 229 shows. Anyone interested in maximum speed should know about template metaprogramming (see Todd Veldhuizen, now at Indiana Univ.: http://extreme.indiana.edu/~tveldhui/).
Breymann, who writes in German but oversees his English translations, is also author of several other books on C++ and software engineering (see http://www.informatik.hs-bremen.de/~brey/). Designing Components with the C++ STL in its current (second) edition as revised by the author is soon to appear in Japanese, translated from the English rather than directly from the original German.
I can offer only minor gripes about this valuable text. One regards the typesetting: Code is in monospaced, fixed font, but the coder's double-slashes // with subsequent comments are in proportional variable-width font, rendering the comments obtrusive in the examples, making the examples a little more difficult to read and occasionally confusing the layout artist, as on page 117 where a number sequence jumps in and out of italics. The other minor gripe is that some examples are prone to crash on typographical errors entered by command-line users.
Breymann maintains a web page for the book at http://www.informatik.hs-bremen.de/~brey/stlerr.html which presents various information, including errata and links to downloading the sources for the examples; the latter may also be had at (ftp://ftp.informatik.hs-bremen.de/pub/brey/stl).
-- Jack Woehr
| Readability |
|
| Originality |
|
| Organization |
|
| Accuracy |
|
| Consistency |
|
| Depth |
|
| Timeliness |
|
| Editing |
|
| Design |
|
| Overall Value |
|
Explanation of ERCB rating scale: No stars = unacceptable, 1 Star = marginal, 2 Stars = average, 3 Stars = above average, 4 Stars = exceptional.