For beginners a very good book from my experience is C++ Primer by Stanley B. Lippman, Josée LaJoie, Barbara E. Moo. The 5th edition even goes into the newer topics like the aforementioned lambdas, also variadic templates. A nice thing is that it comes with exercises, which in my particular case was how I learned programming. I found a new feature of the language, or a class new to me and I played with it until I understood how it works.
Another good book for beginners is Programming -- Principles and Practice Using C++ by Bjarne Stroustrup, from what I read, he wrote this book with the background of teaching programming at the university and wanted to write a good book which uses a good approach which can be used for teaching students programming in C++.
If you are already further in and not at the beginning of learning C++ there is a list of books I recommend as further readings:
- Effective C++ by Scott Meyers
- More Effective C++ by Scott Meyers
- Effective STL by Scott Meyers
---
- Exceptional C++ by Herb Sutter
- More Exceptional C++ by Herb Sutter
- Exceptional C++ Style by Herb Sutter
---
- C++ Templates - The Complete Guide by David Vandevoorde and Nicolai M. Josuttis
- Modern C++ Design - By Andrei Alexandrescu
- C++ Coding Standards by Herb Sutter and Andrei Alexandrescu
Last but not least, reading the C++ Standard is the last bit on the topic of C++
This is the list of books which I recommend anyone who really wants to become great in C++
HTH :-)
Edit: I should probably mention The C++ Programming Language (4th Edition) by Bjarne Stroustrup as a must have as well ;)