REVIEW - The C++ Standard Template Library

Title:

The C++ Standard Template Library

Author:

P. J. Plauger

ISBN:

0134376331

Publisher:

Prentice Hall (2001)

Pages:

485pp

Reviewer:

Francis Glassborow

Reviewed:

December 2003

Rating:

★★★☆☆

essential reading for the aspiring library implementer.

I was not the original reviewer of this book for ACCU but remember being a little surprised by the review that was provided. I hardly ever try to second guess ACCU reviewers as they take their task seriously and always write as they see. A review is always subjective to some extent.

I have regularly reminded readers that if they disagree with a review they have an obligation to say so and say why. The mystery is why it has taken me so long to realise that this obligation applies just as strongly to me as it does to others. It is long past time I put right the classification of this book that is the result of that first review.

I think that the single biggest problem with this book is that the title leads many to expect a very different book. It does not help to be familiar with the other work of the lead author because he writes across a very wide range (I wish 'Programming on Purpose 2' and 'Programming on Purpose 3' were currently in print along with the reissued 'Programming on Purpose'). Without the other authors you would expect this to be a companion volume to 'The Draft C++ Standard Library' (another book desperately in need of a second edition) and 'The C Standard Library' (also needs a new edition to encompass changes brought about by C99). Unfortunately adding in three experts who were very much responsible for the design and early development of the STL leads many to expect a tutorial or manual on the STL. The latter expectation is entirely false and the former completely correct.

PJP is one of the world's great implementers of libraries. He is more familiar with the fundamentals of library implementation than anyone else I know. He has also been very willing over the years to share this knowledge with others. You should not expect details of the final tweaks that make his implementations so highly regarded but within the covers of this book you will find a great deal of useful material at two levels.

The first level allows the serious working programmer to see inside the STL implementations and understand some of the forces that motivated the specific methods that were selected for the version of the Dinkumware C++ Library circa 2000 (experience has led to some changes in implementing some things). This can be important when you are having doubts about whether to handcraft some code or use components shipped with your compiler.

The second level is for those who aspire to becoming library implementers themselves. A close study of this book will greatly improve your understanding of library implementation, particularly as regards to templates.

If I want to use the STL I would first reach for my copy of Nico Josuttis' ' The C++ Standard Library ' but if I want to understand a good implementation, perhaps because I think I need to add my own hand-rolled replacement to the library I am using, then this is the book I reach for.

This is definitely not a book for everyone but on the other hand it is a valuable book for the serious C++ programmer who wants or needs insight into template implementation. It is also essential reading for the aspiring library implementer.


Book cover image courtesy of Open Library.