If you have already got a start with the STL by reading something such as Leen Ammeraal's excellent STL for C++ Programmers this book would make an excellent study to take you on to higher things.
The life of a book reviewer can be very difficult. Shortly after reading and reviewing Timothy Budd's book I picked up this one. I wondered if I should go back to change my earlier review. After some thought I concluded that even had I the time, it would not be fair. The books have very different target readerships. However I am thankful that you have the opportunity to read this review at the same time as the one for Data Structures in C++: Using the STL .
This book was originally written in German and published in 1996. It has now been translated into English. The author couples a profound understanding of C++ and the STL (he is one of Germany's technical experts on C++) and a solid grasp of the needs of those learning new material. The English text reads well and the translator should be complemented on the quality(Addison Wesley Longman should credit translator on the title page).
The first part of the book covers the STL concept and the main STL types (iterators, containers and ADTs - stack, queue etc - provided by adaptors). The next section focuses on a comprehensive single chapter on the standard algorithms.
The third part (second half) of the book concentrates on using STL components to solve various programming problems and the writing of new components to augment the STL. Unlike Budd's book this one spends time on writing a design and implementation of Hash Table that fits the general specifications and constraints of the STL.
In general the code is of good quality (remembering that the reader should be a competent C++ programmer to start with, so does not need code that can be safely emulated without thought) however there are a couple of flaws that I hope the author will attend to. The first is that he should immediately (i.e. at the next printing) change his header sentinels. No pre-processor identifier should ever be written in lower case. In addition, though standard C++ headers are written without a .h extension, user defined ones need the extension if current development tools are going to map the names correctly. Of course the sentinel should also end with
_Hto ensure that there is no collision with other pre- processor identifiers.
I think it is high time that authors of high quality texts set an example by avoiding the use of
usingdirectives. I know that
using namespace std;is almost universal but it does exactly what namespace
stdwas intended to avoid, it pollutes the global namespace with all the identifiers of
std. I hope the author attends to this in the next edition.
If you have already got a start with the STL by reading something such as Leen Ammeraal's excellent STL for C++ Programmers this book would make an excellent study to take you on to higher things.