C++ In a Nutshell

Chapter 1 : Language Basics

-Compilation Steps
-Tokens
-Comments
-Character Sets
-Alternative Tokens
-Trigraphs

Chapter 2 : Declarations

-Declarations and Definitions
-Scope
-Name Lookup
-Linkage
-Type Declarations
-Object Declarations
-Namespaces

Chapter 3 : Expressions

-Lvalues and Rvalues
-Type Conversions
-Constant Expressions
-Expression Evaluation
-Expression Rules

Chapter 4 : Statements

-Expression Statements
-Declarations
-Compound Statements
-Selections
-Loops
-Control Statements
-Handling Exceptions

Chapter 5 : Functions

-Function Declarations
-Function Definitions
-Function Overloading
-Operator Overloading
-The main Function

Chapter 6 : Classes

-Class Definitions
-Data Members
-Member Functions
-Inheritance
-Access Specifiers
-Friends
-Nested Types

Chapter 7 : Templates

-Overview of Templates
-Template Declarations
-Function Templates
-Class Templates
-Specialization
-Partial Specialization
-Instantiation
-Name Lookup
-Tricks with Templates
-Compiling Templates

Chapter 8 : Standard Library

-Overview of the Standard Library
-C Library Wrappers
-Wide and Multibyte Characters
-Traits and Policies
-Allocators
-Numerics

Chapter 9 : Input and Output

-Introduction to I/O Streams
-Text I/O
-Binary I/O
-Stream Buffers
-Manipulators
-Errors and Exceptions

Chapter 10 : Containers, Iterators, and Algorithms

-Containers
-Iterators
-Algorithms

Chapter 11 : Preprocessor Reference

Chapter 12 : Language Reference

Chapter 13 : Library Reference

Appendix A : Compiler Extensions

-Borland C++ Builder and Kylix
-GNU Compiler Collection
-Microsoft Visual C++

Appendix B : Projects

-Blitz++
-Boost
-STLport

C++ Cookbook


Chapter 1 : Building C++ Applications

-Introduction to Building
-Obtaining and Installing GCC
-Building a Simple “Hello, World” Application from the Command Line
-Building a Static Library from the Command Line
-Building a Dynamic Library from the Command Line
-Building a Complex Application from the Command Line
-Installing Boost.Build
-Building a Simple “Hello, World” Application Using Boost.Build
-Building a Static Library Using Boost.Build
-Building a Dynamic Library Using Boost.Build
-Building a Complex application Using Boost.Build
-Building a Static Library with an IDE
-Building a Dynamic Library with an IDE
-Building a Complex Application with an IDE
-Obtaining GNU make
-Building A Simple “Hello, World” Application with GNU make
-Building a Static Library with GNU Make
-Building a Dynamic Library with GNU Make
-Building a Complex Application with GNU make
-Defining a Macro
-Specifying a Command-Line Option from Your IDE
-Producing a Debug Build
-Producing a Release Build
-Specifying a Runtime Library Variant
-Enforcing Strict Conformance to the C++ Standard
-Causing a Source File to Be Linked Automatically Against a Specified Library
-Using Exported Templates

Chapter 2 : Code Organization

-Introduction
-Making Sure a Header File Gets Included Only Once
-Ensuring You Have Only One Instance of a Variable Across Multiple Source Files
-Reducing #includes with Forward Class Declarations
-Preventing Name Collisions with Namespaces
-Including an Inline File

Chapter 3 : Numbers

-Introduction
-Converting a String to a Numeric Type
-Converting Numbers to Strings
-Testing Whether a String Contains a Valid Number
-Comparing Floating-Point Numbers with Bounded Accuracy
-Parsing a String Containing a Number in Scientific Notation
-Converting Between Numeric Types
-Getting the Minimum and Maximum Values for a Numeric Type

Chapter 4 : Strings and Text

-Introduction
-Padding a String
-Trimming a String
-Storing Strings in a Sequence
-Getting the Length of a String
-Reversing a String
-Splitting a String
-Tokenizing a String
-Joining a Sequence of Strings
-Finding Things in Strings
-Finding the nth Instance of a Substring
-Removing a Substring from a String
-Converting a String to Lower- or Uppercase
-Doing a Case-Insensitive String Comparison
-Doing a Case-Insensitive String Search
-Converting Between Tabs and Spaces in a Text File
-Wrapping Lines in a Text File
-Counting the Number of Characters, Words, and Lines in a Text File
-Counting Instances of Each Word in a Text File
-Add Margins to a Text File
-Justify a Text File
-Squeeze Whitespace to Single Spaces in a Text File
-Autocorrect Text as a Buffer Changes
-Reading a Comma-Separated Text File
-Using Regular Expressions to Split a String

Chapter 5 : Dates and Times

-Introduction
-Obtaining the Current Date and Time
-Formatting a Date/Time as a String
-Performing Date and Time Arithmetic
-Converting Between Time Zones
-Determining a Day’s Number Within a Given Year
-Defining Constrained Value Types

Chapter 6 : Managing Data with Containers

-Introduction
-Using vectors Instead of Arrays
-Using vectors Efficiently
-Copying a vector
-Storing Pointers in a vector
-Storing Objects in a list
-Mapping strings to Other Things
-Using Hashed Containers
-Storing Objects in Sorted Order
-Storing Containers in Containers

Chapter 7 : Algorithms

-Introduction
-Iterating Through a Container
-Removing Objects from a Container
-Randomly Shuffling Data
-Comparing Ranges
-Merging Data
-Sorting a Range
-Partitioning a Range
-Performing Set Operations on Sequences
-Transforming Elements in a Sequence
-Writing Your Own Algorithm
-Printing a Range to a Stream

Chapter 8 : Classes

-Introduction
-Initializing Class Member Variables
-Using a Function to Create Objects (a.k.a. Factory Pattern)
-Using Constructors and Destructors to Manage Resources (or RAII)
-Automatically Adding New Class Instances to a Container
-Ensuring a Single Copy of a Member Variable
-Determining an Object’s Type at Runtime
-Determining if One Object’s Class Is a Subclass of Another
-Giving Each Instance of a Class a Unique Identifier
-Creating a Singleton Class
-Creating an Interface with an Abstract Base Class
-Writing a Class Template
-Writing a Member Function Template
-Overloading the Increment and Decrement Operators
-Overloading Arithmetic and Assignment Operators for Intuitive Class Behavior
-Calling a Superclass Virtual Function

Chapter 9 : Exceptions and Safety

-Introduction
-Creating an Exception Class
-Making a Constructor Exception-Safe
-Making an Initializer List Exception-Safe
-Making Member Functions Exception-Safe
-Safely Copying an Object

Chapter 10 : Streams and Files

-Introduction
-Lining Up Text Output
-Formatting Floating-Point Output
-Writing Your Own Stream Manipulators
-Making a Class Writable to a Stream
-Making a Class Readable from a Stream
-Getting Information About a File
-Copying a File
-Deleting or Renaming a File
-Creating a Temporary Filename and File
-Creating a Directory
-Removing a Directory
-Reading the Contents of a Directory
-Extracting a File Extension from a String
-Extracting a Filename from a Full Path
-Extracting a Path from a Full Path and Filename
-Replacing a File Extension
-Combining Two Paths into a Single Path

Chapter 11 : Science and Mathematics

-Introduction
-Computing the Number of Elements in a Container
-Finding the Greatest or Least Value in a Container
-Computing the Sum and Mean of Elements in a Container
-Filtering Values Outside a Given Range
-Computing Variance, Standard Deviation, and Other Statistical Functions
-Generating Random Numbers
-Initializing a Container with Random Numbers
-Representing a Dynamically Sized Numerical Vector
-Representing a Fixed-Size Numerical Vector
-Computing a Dot Product
-Computing the Norm of a Vector
-Computing the Distance Between Two Vectors
-Implementing a Stride Iterator
-Implementing a Dynamically Sized Matrix
-Implementing a Constant-Sized Matrix
-Multiplying Matricies
-Computing the Fast Fourier Transform
-Working with Polar Coordinates
-Performing Arithmetic on Bitsets
-Representing Large Fixed-Width Integers
-Implementing Fixed-Point Numbers

Chapter 12 : Multithreading

-Introduction
-Creating a Thread
-Making a Resource Thread-Safe
-Notifying One Thread from Another
-Initializing Shared Resources Once
-Passing an Argument to a Thread Function

Chapter 13 : Internationalization

-Introduction
-Hardcoding a Unicode String
-Writing and Reading Numbers
-Writing and Reading Dates and Times
-Writing and Reading Currency
-Sorting Localized Strings

Chapter 14 : XML

-Introduction
-Parsing a Simple XML Document
-Working with Xerces Strings
-Parsing a Complex XML Document
-Manipulating an XML Document
-Validating an XML Document with a DTD
-Validating an XML Document with a Schema
-Transforming an XML Document with XSLT
-Evaluating an XPath Expression
-Using XML to Save and Restore a Collection of Objects

Chapter 15 : Miscellaneous

-Introduction
-Using Function Pointers for Callbacks
-Using Pointers to Class Members
-Ensuring That a Function Doesn’t Modify an Argument
-Ensuring That a Member Function Doesn’t Modify Its Object
-Writing an Operator That Isn’t a Member Function
-Initializing a Sequence with Comma-Separated Values