C++ books

The C++ Programming Language

 * Written by Bjarne Stroustrup, the creator of C++, this book gives a detailed, complete overview of the C++ programming language, its constructs, usage, and what constitutes well-formed and well-defined C++ code.

Programming: Principles and Practice using C++

 * "This book is aimed at beginners taking a programming course and people learning C++ as self study." &mdash; http://www.stroustrup.com/Programming/

The Design and Evolution of C++

 * This is the closest equivalent for C++ to the C Standard's accompanying rationale, D&amp;E gives some history of the evolution of C++ from its infancy through to the ARM and provides many details of why C++ is the way it is, and of some ideas which were considered and rejected. While D&amp;E does not cover ISO Standard C++, it is the best available guide to how C++ came to be the way it is.

Accelerated C++

 * This is an excellent book to teach C++ to someone who already has a basic familiarity with programming. It teaches standard C++ and is generally agreed by most #C++ regulars as being the definitive "teaching" text for people who already know another programming language.

The C Programming Language

 * Written by the original creators of the C programming language, The C Programming Language is a terse, factual read. An absolute must-have for any C/C++ programmer because frequent references are made to "The K&amp;R book". Not suitable for beginners with no programming experience.

C++ Primer (4th Ed.)

 * This book is a comprehensive examination of the C++ language, and is written by established experts in the C++ industry. Many consider this book to be the most thorough, complete title in its genre. It is often recommended as a first book for learning C++.

Effective C++

 * This book contains examples on how to account for common issues faced when writing C++ programs, such as creation of temporaries, iterator invalidation, and other gotchas.

More Effective C++

 * This book goes more in depth, following the same format as the first book, "Effective C++." This book explores issues such as exception safety, dynamic memory allocation, and more.

Modern C++ Design

 * One of the best books on generic programming, this book explores several facets of C++ design that can be improved using generic programming and policy-based object design. Chapters of this book are dedicated to the Singleton pattern, smart pointers, abstract factory classes, and more.

Exceptional C++

 * This book contains many of the items found at the GOTW site. These are laid out in an easy to read format, and includes several examples not found on that site. This is a good book to read from cover to cover, and refer to later as a reference for topics such as exception safety and solid commit-rollback assignment semantics.

More Exceptional C++

 * This book goes more in depth, featuring topics such as the C++ standard library, optimization, inheritance and memory management.

C++ Templates

 * This book is an excellent tutorial and detailed reference on the C++ template system. It covers techniques such as static polymorphism, policies, and template metaprogramming.

Exceptional C++ Style

 * This book goes beyond learning the syntax and best practices of writing C++ code, and pushes the reader to really understand what the various aspects of the language are doing. Like the other Sutter books, this is written as a large collection of smallish items, some of which can be found in the Guru-of-the-week collection.

C++ Coding Standards

 * Many people read Herb Sutter's Guru of the Week columns, and many have read Andrei Alexandrescu's Modern C++ Design or used his Loki library. Now they have teamed up to deliver a book on best practices for writing C++, based on their own considerable experience and on the wealth of experience from the C++ community as a whole.

Effective STL

 * Covers a wide range of basics on how to use the STL to perform common programming tasks. Demonstrates why many of the C++ Standard Library algorithms and data structures are better suited for a wide range of tasks than rolling your own, and also demonstrates exceptions to this rule, where it is preferable to write your own.

The C++ Standard Library

 * The best book available for learning the C++ standard library. Covers containers, strings, algorithms, and more.

Generic Programming and the STL

 * Very good buildup of STL; it focuses on concepts first and containers last. The book is a heavily annotated outgrowth from the SGI STL docs (which he also wrote). This book is probablya bit more formal than other standard library books.

Standard C++ Iostreams and Locales

 * This book covers IOStreams and Locales in thorough detail. It is written in such a style that a beginner who has been acquainted with the STL through some programming experience or through the book above should be able to keep up with the pace of this book. Experienced STL users will, however, appreciate this book's detail in explaining the interaction between IOStreams, locales, and performing formatted and unformatted I/O operations, as well as extending the template classes for custom applications.

Programming Windows, the Definintive Guide to the Win32 API

 * The must-have Win32 book for every windows programmer

Programming Windows with MFC

 * The must-have MFC book for every windows MFC programmer

Programming Applications for Microsoft Windows

 * Covers windows programming topics not specifically related to GUI programming, such as threads, memory, kernel objects, DLLs, and system APIs.

Introduction to Algorithms

 * The de facto standard algorithm book, this book contains derivation and analysis of common algorithms and data structures such as hash tables, red black trees, and directed graphs.

The Art of Computer Programming, Vol. 1-3

 * This is the master of all algorithm and computer theory books, written by one of the pillars of the computer science community. This set is very tough reading, but very rewarding as well.

lex &amp; yacc

 * This book explains how to use lex and yacc to create a lexer and a parser to recognize and parse a language based on a language specification.

Compilers (The Dragon Book)

 * The standard compiler book, discusses all aspects of compiler creation, from writing a lexer and parser, to checking code semantics and writing a code generator. Definitely a must for anyone who wants to write a compiler.