Effective STL: 50 Specific Ways to Improve Your Use of th... and over one million other books are available for Amazon Kindle. Learn more

Vous voulez voir cette page en français ? Cliquez ici.

Sign in to turn on 1-Click ordering.
Amazon Prime Free Trial required. Sign up when you check out. Learn More
More Buying Choices
Have one to sell? Sell yours here
Start reading Effective STL on your Kindle in under a minute.

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.

Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library [Paperback]

Scott Meyers
4.5 out of 5 stars  See all reviews (27 customer reviews)
List Price: CDN$ 51.99
Price: CDN$ 32.75 & FREE Shipping. Details
You Save: CDN$ 19.24 (37%)
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
In Stock.
Ships from and sold by Amazon.ca. Gift-wrap available.
Want it delivered Tuesday, April 22? Choose One-Day Shipping at checkout.


Amazon Price New from Used from
Kindle Edition CDN $25.14  
Paperback CDN $32.75  

Book Description

June 6 2001 9780201749625 978-0201749625 1
“This is Effective C++ volume three – it’s really that good.”
– Herb Sutter, independent consultant and secretary of the ISO/ANSI C++ standards committee
“There are very few books which all C++ programmers must have. Add Effective STL to that list.”
– Thomas Becker, Senior Software Engineer, Zephyr Associates, Inc., and columnist, C/C++ Users Journal

C++’s Standard Template Library is revolutionary, but learning to use it well has always been a challenge. Until now. In this book, best-selling author Scott Meyers ( Effective C++ , and More Effective C++ ) reveals the critical rules of thumb employed by the experts – the things they almost always do or almost always avoid doing – to get the most out of the library.

Other books describe what’s in the STL. Effective STL shows you how to use it. Each of the book’s 50 guidelines is backed by Meyers’ legendary analysis and incisive examples, so you’ll learn not only what to do, but also when to do it – and why.

Highlights of Effective STL include:

  • Advice on choosing among standard STL containers (like vector and list), nonstandard STL containers (like hash_set and hash_map), and non-STL containers (like bitset).
  • Techniques to maximize the efficiency of the STL and the programs that use it.
  • Insights into the behavior of iterators, function objects, and allocators, including things you should not do.
  • Guidance for the proper use of algorithms and member functions whose names are the same (e.g., find), but whose actions differ in subtle (but important) ways.
  • Discussions of potential portability problems, including straightforward ways to avoid them.

Like Meyers’ previous books, Effective STL is filled with proven wisdom that comes only from experience. Its clear, concise, penetrating style makes it an essential resource for every STL programmer.

Frequently Bought Together

Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library + Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition) + More Effective C++: 35 New Ways to Improve Your Programs and Designs
Price For All Three: CDN$ 98.25

Show availability and shipping details

Product Details

Product Description

From Amazon

Written for the intermediate or advanced C++ programmer, renowned C++ expert Scott Meyers provides essential techniques for getting more out of the Standard Template Library in Effective STL, a tutorial for doing more with this powerful library.

STL is a hugely powerful feature of today's C++, but one with a well-earned reputation for complexity. The book is organised into 50 tips that explore different areas of the STL. Besides providing a list of dos and don'ts, Meyers presents a lot of background on what works and what doesn't with STL. Each tip is demonstrated with in-depth coding samples, many of which make use of two-colour printing to highlight the most important lines of code. (Advanced developers will enjoy Meyers' in-depth explanations, while those who are in a hurry can skip ahead to the recommended tip itself.)

A good part of this book involves using containers, like vectors and maps, which are built into STL. (Besides the standard built-in containers, the author also highlights recent additions to STL like b-trees, which are available as extensions from other vendors.) You'll learn the best ways to allocate, add, change and delete items inside containers, including associative containers like maps. You'll also learn to avoid common pitfalls for writing code that is slow or just plain wrong.

Other areas covered in Effective STL include getting the most out of the 100-plus STL algorithms that are bundled with this library. Meyers shows you how to choose the correct algorithm for sorting, and other functions. (Even advanced developers will learn something here.) Sections on using function objects (called functors) round out the text. Meyers shows you when these classes make sense and the best ways to implement them. Besides specific tips, you'll get plenty of general programming advice. A useful appendix shows the limitations of STL as implemented in Microsoft Visual C++ 6.0 and how to overcome them.

Overall, Effective STL is a really invaluable source of programming expertise on an essential aspect of today's C++ for anyone who is using--or planning to use--STL in real production code. It is quite simply a must-have. --Richard Dragan

Topics covered:

  • introduction to advanced Standard Template Library (STL) programming techniques
  • 50 tips and best practices for STL illustrated with sample tutorial code
  • choosing containers
  • efficient copying of elements inside containers
  • removing, erasing and cleaning up items from containers
  • using custom allocators with STL containers
  • thread safety with STL
  • tips for programming with the STL "vector" and "string" classes (including reserving memory and calling legacy C/C++ code)
  • tips for associative containers (including comparing items, sorted vectors and non-standard enhancements to STL)
  • tips for selecting and using STL iterator classes
  • STL algorithms (including sorting, removing and comparing items)
  • using functors with STL
  • general tips for STL programming (including advice for choosing algorithms and understanding compiler diagnostic messages)
  • string locales
  • overcoming STL imitations in Microsoft Visual C++ 6.0

From the Inside Flap

It came without ribbons!
It came without tags! It came without packages, boxes or bags!

— Dr. Seuss, How the Grinch Stole Christmas!, Random House, 1957

I first wrote about the Standard Template Library in 1995, when I concluded the final Item of More Effective C++ with a brief STL overview. I should have known better. Shortly thereafter, I began receiving mail asking when I’d write Effective STL.

I resisted the idea for several years. At first, I wasn’t familiar enough with the STL to offer advice on it, but as time went on and my experience with it grew, this concern gave way to other reservations. There was never any question that the library represented a breakthrough in efficient and extensible design, but when it came to using the STL, there were practical problems I couldn’t overlook. Porting all but the simplest STL programs was a challenge, not only because library implementations varied, but also because template support in the underlying compilers ranged from good to awful. STL tutorials were hard to come by, so learning “the STL way of programming” was difficult, and once that hurdle was overcome, finding comprehensible and accurate reference documentation was equally difficult. Perhaps most daunting, even the smallest STL usage error often led to a blizzard of compiler diagnostics, each thousands of characters long, most referring to classes, functions, or templates not mentioned in the offending source code, almost all incomprehensible. Though I had great admiration for the STL and for the people behind it, I felt uncomfortable recommending it to practicing programmers. I wasn’t sure it was possible to use the STL effectively.

Then I began to notice something that took me by surprise. Despite the portability problems, despite the dismal documentation, despite the compiler diagnostics resembling transmission line noise, many of my consulting clients were using the STL anyway. Furthermore, they weren’t just playing with it, they were using it in production code! That was a revelation. I knew that the STL featured an elegant design, but any library where programmers are willing to endure portability headaches, poor documentation, and incomprehensible error messages has a lot more going for it than just good design. For an increasingly large number of professional programmers, I realized, even a bad implementation of the STL was preferable to no implementation at all.

Furthermore, I knew that the situation regarding the STL would only get better. Libraries and compilers would grow more conformant with the Standard (they have), better documentation would become available (it has — check out the bibliography beginning on page 225), and compiler diagnostics would improve (for the most part, we’re still waiting, but Item 49 offers suggestions for how to cope while we wait). I therefore decided to chip in and do my part for the burgeoning STL movement, and this book is the result: 50 specific ways to improve your use of C++’s Standard Template Library.

My original plan was to write the book in the second half of 1999, and with that thought in mind, I put together an outline. But then I paused and changed course. I suspended work on the book, and I developed an introductory training course on the STL, which I then taught several times to different groups of programmers. About a year later, I returned to the book, significantly revising the outline based on my experiences with the training course. In the same way that my Effective C++ has been successful by being grounded in the problems faced by real programmers, it’s my hope that Effective STL similarly addresses the practical aspects of STL programming — the aspects most important to professional developers.

I am always on the lookout for ways to improve my understanding of C++. If you have suggestions for new guidelines for STL programming or if you have comments on the guidelines in this book, please let me know. In addition, it is my continuing goal to make this book as accurate as possible, so for each error in this book that is reported to me — be it technical, grammatical, typographical, or otherwise — I will, in future printings, gladly add to the acknowledgments the name of the first person to bring that error to my attention. Send your suggested guidelines, your comments, and your criticisms to estl@aristeia.com.

I maintain a list of changes to this book since its first printing, including bug-fixes, clarifications, and technical updates.I use the list to make announcements likely to be of interest to people who follow my work on C++.

Inside This Book (Learn More)
Browse Sample Pages
Front Cover | Copyright | Table of Contents | Excerpt | Index
Search inside this book:

What Other Items Do Customers Buy After Viewing This Item?

Customer Reviews

Most helpful customer reviews
1 of 1 people found the following review helpful
2.0 out of 5 stars Not as good as his other books May 15 2003
By A Customer
The only reason I picked up this book was because of his other book Effective C++. I liked the way he approached things in that book so I decided to pick up this book as well, trusting that I was going to get the same result. Writing a book on the STL is different however and the formula that worked for Effective C++ didn't work for this one at all. If you're looking for a book specifically on STL then I would recommend picking up something else before this one. If you've already read all the books on STL and you're looking for something that'll put some of those pieces together than this might be the one for you.
Was this review helpful to you?
5.0 out of 5 stars Very Effective Resource for C++ April 14 2013
Format:Paperback|Verified Purchase
This book will greatly improve the quality of your C++ programs and designs. Not for beginners; you must have a decent understanding of C++ for this to be any help.
Was this review helpful to you?
4.0 out of 5 stars a very good book Nov. 25 2006
I really enjoyed to read this book as it contains very good tips. The only detail that annoys me a little bit is the amount of cross references between the items. The author first 2 books were a little bit like that but it seems to me that this one is too much. I would have prefered to have items more self contained. If you want to refer to a particular item, this one will refer to 2 other items that will refer to some more items and so on to the point where if you would like to close the open loop, you would need to consult all the items.

Except for this small annoyance, this book is very good. You should read it or have it.
Was this review helpful to you?
5.0 out of 5 stars Good book for experienced stl user Aug. 19 2003
Frankly this is not a beginner's book. You need some deep knowledge of c++ templates and working knowledge of stl to make the best out of this book.
Aside from introducing some caveats in STL programming, the main achievement of this book is to introduce the more descent part of STL which is less commonly used.
If you only use STL in the same way you use traditional data structure interfaces, this is the book for you.
Was this review helpful to you?
5.0 out of 5 stars A must have Oct. 29 2002
Following in the tradition of his prior books, Meyers delivers another gem with Effective STL. This one is a must have for your software development bookshelf.
I user several STL books regularly and none of them have come close to giving me the in depth understanding that this book has. Sure, others are better references, beginner guides, etc.. but if you really want to understand what is going on under the covers and how to write -good- STL, this book is your answer. I have seen suggestions from this book result in massive performance improvements in naively written STL code.
Enough said, go pick up a copy .. :)
Was this review helpful to you?
5.0 out of 5 stars A C++ STL Book of Wisdom Oct. 19 2002
Effective STL is an advanced book of wisdom to some of the more important features in the C++ STL. There are many books about the STL, but this book definitely stands out in terms of its contents. Scott Meyers does not write an STL reference. Meyers writes an STL wisdom. He presents exceptional advices on important STL features including containers, iterators, algorithms, and function objects, and STL usage in terms of correctness, simplicity, efficiency, and pure speed.
Meyers answers this question: So you know fundamental features of the C++ STL, But do you know why and when to implement those C++ STL tools as solutions?
I highly recommend Effective STL.
Was this review helpful to you?
3.0 out of 5 stars More Brain Teaser than Tutorial Sept. 3 2002
God bless Scott Meyers and this is (probably) a good book. But it doesn't fit into the same educational niche as his books on effective C++. I read "Effective C++: 50..." WHEN I was learning C++, and it made sense and it enhanced the learning experience. It left me with the impression that I could master C++. I read "Effective C++: 35..." after I learned C++ and was left with the impression that C++ could always find a way to misbehave unless I was very careful. Well, I thought that I knew a little bit about STL and that this new effort from Scott Meyers would improve my knowledge. Wrong! Meyers thoughtfully ranked the articles by difficulty. I could not muddle through the easiest of them. OK, so I learned that I don't know STL and need to do some stretching. Given Meyers' previous efforts, this has to be a good book. It's just not as accessible. This is not a beginner's book. I knocked off one star because this book is less than I expected it to be.
Was this review helpful to you?
5.0 out of 5 stars "Hat Trick" for Scott Aug. 5 2002
This is the third book by Scott Meyers that I've owned. It is, as expected, a joy to read. I find Scott's style of writing easy to follow. Although, I suspect you could find everything that's in this book elsewhere, it would be several elsewhweres. Scott wraps it all up in one neat package. I guess I would summarize its utility in one sentence: "BUY THIS BOOK!"
Was this review helpful to you?
Want to see more reviews on this item?

Look for similar items by category