Contents
Exploration 1: Honing Your Tools
Exploration 2: Reading C++ Code
Exploration 3: Integer Expressions
Exploration 8: Formatted Output
Exploration 9: Arrays and Vectors
Exploration 10: Algorithms and Iterators
Using Iterators and Algorithms
Exploration 11: Increment and Decrement
Exploration 12: Conditions and Logic
Exploration 13: Compound Statements
Definitions in for Loop Headers
Exploration 14: Introduction to File I/O
Exploration 15: The Map Data Structure
Exploration 18: Character Categories
Exploration 20: Writing Functions
Exploration 21: Function Arguments
Exploration 22: Using Algorithms
Exploration 23: Unnamed Functions
Exploration 24: Overloading Function Names
Exploration 25: Big and Little Numbers
Exploration 26: Very Big and Very Little Numbers
Documentation Tags and Markdown
Exploration 28: Project 1: Body-Mass Index
Exploration 30: Overloading Operators
Exploration 31: Custom I/O Operators
Exploration 32: Assignment and Initialization
Exploration 33: Writing Classes
Defaulted and Deleted Constructors
Exploration 34: More About Member Functions
Exploration 36: Introduction to Object-Oriented Programming
Liskov’s Substitution Principle
Exploration 38: Virtual Functions
Exploration 39: Classes and Types
Resource Acquisition Is Initialization
Exploration 40: Declarations and Definitions
Variable Declarations and Definitions
Exploration 41: Using Multiple Source Files
Exploration 42: Function Objects
Exploration 43: Useful Algorithms
const_iterator vs. const iterator
Exploration 46: More Operators
Arithmetic Assignment Operators
Exploration 47: Project 2: Fixed-Point Numbers
fixed(value_type integer, value_type fraction)
Exploration 48: Function Templates
Exploration 49: Class Templates
Parameterizing the rational Class
Exploration 50: Template Specialization
Instantiation and Specialization
Specializing Function Templates
Exploration 51: Partial Template Specialization
Partially Specializing Function Templates
Exploration 52: Names and Namespaces
The using Declaration in a Class
Inserting in a Sequence Container
Erasing from a Sequence Container
Inserting in an Associative Container
Erasing from an Associative Container
Exploration 54: Locales and Facets
Exploration 55: International Characters
Exploration 57: Project 3: Currency Type
Exploration 59: Dynamic Memory
Implementing Standard Containers
Exploration 60: Moving Data with Rvalue References
Exploration 61: Exception-Safety
Automatically Deleting Pointers
Exploration 62: Old-Fashioned Arrays
Dynamically Allocating an Array
Exploration 63: Smart Pointers
Exploration 64: Working with Bits
Safe Shifting with Unsigned Types
Exploration 66: Multiple Inheritance
Exploration 67: Traits and Policies
Exploration 68: Names, Namespaces, and Templates
Exploration 69: Overloaded Functions and Operators
Review of Overloaded Functions
Exploration 70: Metaprogramming
Use constexpr for Compile-Time Values
Variable-Length Template Argument Lists
Substitution Failure Is Not An Error (SFINAE)