Here are my suggestions on the essential C++ books, following the links below will take you to Amazon. If you enter Amazon through the Snowgold site, and you buy anything, I will get a small commission. Whether you buy at Amazon directly or enter via this site, your prices don’t change.

Introductory Books

Stroustrup Book1

Programming - Principles and Practice Using C++

Written by the designer and original implementer of C++. Provides a solid foundation to write correct, efficient and maintainable code. Covers fundamental concepts and techniques in greater depth than normal introductions. Designed for people who haven’t written code before.

Cline Book

C++ FAQs

This book is starting to show it’s age, but is still worthwhile having on your bookshelf. As the name implies, a series of frequently asked questions, grouped by topic.

Koenig Book

Accelerated C++ - Practical Programming by Example

Based on the authors’ intensive summer C++ courses at Stanford University. Concentrates on solving problems, rather than learning language and library features for their own sake.

Tips and Tricks

Meyers Book1

Effective C++: 55 Specific Ways to Improve Your Programs and Designs

Scott Meyers provides 55 tips to improve the design of your C++ code. Meyers’ writing style is a joy to read, this book and it’s siblings were the basis of many C++ job interviews I’ve successfully taken in the past.

Meyers Book2

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

Another set of tips from Scott Meyers. Highly recommended.

Sutter Book

Exceptional C++

Based on the popular C++ Guru Of The Week (GOTW), presents a series of self contained C++ engineering problems and solutions that illustrate specific design and coding techniques. Each problem has a difficulty rating and problems are organised by topic.

Boost and the STL

Josuttis Book

The C++ Standard Library: A Tutorial and Reference

The best STL book in our opinion. Covers the C++ standard library, now part of the C++11 standard, focussing in particular on the Standard Template Library (STL), examining containers, iterators, function objects, and STL algorithms.

Meyers Book3

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

Meyers is up to his old tricks with a set of tips on the STL.

Karlsson Book

Beyond the C++ Standard Library - An Introduction to Boost

Boost is another powerful set of libraries, extensively used in C++ development. In my opinion the Boost documentation can be patchy at best, Karlsson covers some of the more commonly used Boost libraries, but be aware Boost is a large collection of libraries and this book only scratches the surface.

Templates and Metaprogramming

Vandevoorde Book

C++ Templates - The Complete Guide

In my opinion the best book on C++ templates by a long way. Written by David Vandevoorde and Nicolai Josuttis. Explains why, how and when to use templates.

Alexandrescu Book

Generic Programming and Design Patterns Applied

Definitely not for beginners, this is an advanced book which demonstrates the power of meta programming using templates.

Modern C++

Williams Book

C++ Concurrency in Action: Practical Multithreading

Anthony Williams maintainer of the Boost Thread library since 2006 and active participant on the C++ Standards Committee, covers the C++11 approach to multithreading. This book shows you how to write robust multithreaded applications in C++ while avoiding many common pitfalls. Suitable for those new to concurrency and more experienced programmers.

Meyers Book4

Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14

Scott Meyers once again appears on the list, with tips covering the more recent additions to C++.

Miscellaneous

Langr Book

Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better

Test Driven Development (TDD) the C++ way. Focuses mainly on Google Test / Mock (my preferred unit testing framework) but also has some coverage of CppUTest. If you use another unit testing framework, then you should still be able to follow the book and adapt the examples accordingly with minimal effort. Nice writing style, though I’m not convinced by hamcrest notation! Don’t be put off by a single low rating review on Amazon.

Stroustrup Book2

The Design and Evolution of C++

I started this list with a Stroustrup book, so only fitting that the inventor of C++ should get the last word. Provides insights into the decisions that shaped C++.