views:

342

answers:

3

Hello

Can you give me advice for a modern book(s) for Effective C++ Programming

By modern I mean that I want it to include new features from Boost C++ Library (casts, smart pointers, etc.)

I have these books:

  • Effective C++: 55 Specific Ways to Improve Your Programs and Designs
  • More Effective C++: 35 New Ways to Improve Your Programs and Designs

May be I need this one too:

  • Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library
+6  A: 

This isn't exactly what you asked for (no mention of Boost, for example), but if you're looking for good books about using C++ to it's fullest, check out:

Modern C++ Design

As mentioned by some comments, this book is quite advanced. If you're looking for a hot-to type book on the use of elementary tools & libraries like STL, this is defintely not the book to get. But If you are already a good programmer and are looking to make your brain bigger, check it out.

John Dibling
That book is quite a leap forward -- perhaps try "Exceptional C++ Style" first -- it deals in a more introductory way with template programming -- Modern C++ Design is quite advanced.
Hassan Syed
An excellent book but, as Hassan says, pretty advanced. It's more at the level of designing Boost-style libraries than using them effectively. I'd definitely recommend "Effective STL".
Mike Seymour
I had to read that book four or five times before I grokked what was going on. It's a real eye-opener.
Kaz Dragon
A: 

Those Books (though they might be helpful) are only a small factor in good programming, i'd recommend reading into Books describing the Gang-of-Four patterns and design patterns/approaches in general, they will help you far more than knowing how to use a std::vector more efficiently.

dbemerlin
If you don't know how to use std::vector properly, you are going to have difficulty using it to implement design patterns.
anon
As you might have noticed, i wrote "use std::vector more efficently", not "use std::vector at all". The OP is looking for ways to improve his programming skills which means he knows at least the basics already. IMHO it is far more usefull to know your GoF than to know every aspect of the STL or every single feature of Boost... since you most likely will work with people who do _not_ know every aspect of STL and every feature of Boost so in the end you will only create less maintainable code.
dbemerlin
Well, I could live quite happily without the GoF - I couldn't manage without std::vector.
anon
Well, luckily i won't be the one who needs to maintain your code when one of your coworkers kills you because of your unmaintainable code making a hell out of their workdays...
dbemerlin
I don't see why you think I write unmaintainable code - my co-workers have normally commented on how easy to maintain it is.
anon
@dbermerlin:Keep in mind that the GoF patterns were derived from observing existing (well written) code. You don't have to know about them to use them. From what I've seen, knowing them is almost counterproductive, leading to attempting to apply specific patterns even when they don't really fit.
Jerry Coffin
+7  A: 

If you want to start with boost look at: Beyond the C++ Standard Library: An Introduction to Boost
You may also consider reading documentation at Boost website IMHO it is the best way to widen your knowledge about Boost.

beermann
+1: "Your Amazon Order Has Shipped!"
John Dibling