You are previewing C++ for the Impatient.
O'Reilly logo
C++ for the Impatient

Book Description

A Ready Reference for C++

C++ for the Impatient offers both the quickest way for busy programmers to learn the latest features of the C++ language and a handy resource for quickly finding answers to specific language questions. Designed to give you the most accurate and up-to-date information you require fast and to the point, this book is also an essential guide to the new C++11 standard, including advanced uses of the C++ standard library.

Features include

  • Concise descriptions of nearly every function, object, and operator in the C++ core language and standard library, with clear, well-chosen examples for each of them

  • Information provided “at a glance” through syntax displays, tables, and summaries of important functions

  • Content organized for quick look-up of needed information

  • Simple explanations of advanced concepts, using helpful illustrations

  • Complete program examples that are both useful and intriguing, including puzzles, games, and challenging exercises

C++11 features, all covered in the book, include:

  • Lambdas

  • rvalue references

  • Regular-expression library

  • Randomization library

  • Hash-table containers

  • Smart pointers

C++ for the Impatient is an ideal resource for anyone who needs to come up to speed quickly on C++11. Whether or not it’s your first C++ book, it will be one you come back to often for reliable answers.

Table of Contents

  1. About This eBook
  2. Title Page
  3. Copyright Page
  4. Dedication Page
  5. Contents
  6. Preface
    1. How This Book Is Different: Learning C++11
    2. Who Should Buy This Book?
    3. Examples and Exercises
    4. Requirements: Your Version of C++
    5. C++11
    6. Learning about Object Orientation
    7. Typographic Conventions
    8. A Final Word
  7. Acknowledgments
  8. About the Author
  9. Chapter 1. C++ Fundamentals
    1. 1.1. Elements of a C++ Program
    2. 1.2. Dealing with “Flashing Console”
    3. 1.3. Working with Microsoft Visual Studio
    4. 1.4. Doing More with C++
    5. 1.5. Adding Simple Variable Declarations
    6. 1.6. Introduction to C++ Control Structures
    7. 1.7. General Structure of a C++ Program
    8. 1.8. More about Namespaces
    9. 1.9. Some Comments about Comments
    10. 1.10. Sample App: Adding Machine
    11. Exercises
    12. 1.11. Sample App: Calculating Phi
    13. Exercises
  10. Chapter 2. Data
    1. 2.1. Declaring Simple Variables
    2. 2.2. Primitive Data Types
    3. 2.3. Symbolic Names (“Symbols”)
    4. 2.4. Numeric Literals
    5. 2.5. Mixing Numeric Types
    6. 2.6. String and Character Literals
    7. 2.7. Data Declarations: The Complete Syntax
    8. 2.8. Enumerated Types
    9. 2.9. Special Declarations (typedef, auto, decltype)
    10. 2.10. Sample App: Type Promotion
    11. Exercises
  11. Chapter 3. Operators
    1. 3.1. Precedence, Associativity, and Lvalues
    2. 3.2. Concise Summary of Operators
    3. 3.3. Operators in Detail
    4. 3.4. The Great Controversy: Postfix or Prefix?
    5. 3.5. Bitwise Operators in Detail
    6. 3.6. Cast Operators
    7. 3.7. Sample App: Binary Printout
    8. Exercises
  12. Chapter 4. Control Structures
    1. 4.1. Concise Summary of C++ Statements
    2. 4.2. Null Statements (;) and Expression Statements
    3. 4.3. Compound Statements
    4. 4.4. if and if-else Statements
    5. 4.5. while and do-while Statements
    6. 4.6. for Statements
    7. 4.7. Range-based for Statements (C++11)
    8. 4.8. switch Statements
    9. 4.9. Jump Statements (break, continue, goto)
    10. 4.10. Exception Handling (try, catch)
    11. 4.11. Sample App: Guess-the-Number Game
    12. Exercises
    13. 4.12. Sample App: Computer Guesses the Number
    14. Exercises
  13. Chapter 5. Functions
    1. 5.1. Overview of Traditional (Named) Functions
    2. 5.2. Local and Global Variables
    3. 5.3. Complete Function Declaration Syntax
    4. 5.4. Function Overloading
    5. 5.5. Arguments with Default Values
    6. 5.6. Variable-Length Argument Lists
    7. 5.7. Lambda, or Anonymous, Functions (C++11)
    8. 5.8. constexpr Functions (C++11)
    9. 5.9. Sample App: Odds at Dice
    10. Exercises
  14. Chapter 6. Pointers, Arrays, and References
    1. 6.1. References
    2. 6.2. Arrays
    3. 6.3. Pointers
    4. 6.4. Complex Declarations Involving Pointers
    5. 6.5. Passing and Returning Function Pointers
    6. 6.6. Smart Pointers (C++11)
    7. 6.7. Sample App: Sieve of Eratosthenes
    8. Exercises
  15. Chapter 7. Classes and Objects
    1. 7.1. Overview: Structures, Unions, and Classes
    2. 7.2. Basic Class Declaration Syntax
    3. 7.3. Constructors
    4. 7.4. Destructors
    5. 7.5. The Hidden “this” Pointer
    6. 7.6. Operator Functions (Op Overloading)
    7. 7.7. Deriving Classes (Subclassing)
    8. 7.8. Bit Fields
    9. 7.9. Unions
    10. 7.10. Sample App: Packed Boolean
    11. Exercises
  16. Chapter 8. Preprocessor Directives
    1. 8.1. General Syntax of Preprocessor Directives
    2. 8.2. Summary of Preprocessor Directives
    3. 8.3. Using Directives to Solve Specific Problems
    4. 8.4. Preprocessor Operators
    5. 8.5. Predefined Macros
    6. 8.6. Creating Project Header Files
  17. Chapter 9. Creating and Using Templates
    1. 9.1. Templates: Syntax and Overview
    2. 9.2. Function Templates
    3. 9.3. Class Templates
    4. 9.4. Class Templates with Member Functions
    5. 9.5. Using Integer Template Parameters
    6. 9.6. Template Specialization
    7. 9.7. Variadic Templates (C++11)
    8. 9.8. Sample App: Type Promotion, v 2
    9. Exercises
  18. Chapter 10. C-String Library Functions
    1. 10.1. Overview of the C-String Format
    2. 10.2. Input and Output with C-Strings
    3. 10.3. C-String Functions
    4. 10.4. String Tokenizing with strtok
    5. 10.5. Individual-Character Functions
    6. 10.6. Memory-Block Functions (memcpy, and so on)
    7. 10.7. Wide-Character Functions (wstrcpy, and so on)
  19. Chapter 11. C I/O Library Functions
    1. 11.1. Overview of C Library I/O
    2. 11.2. Console I/O Functions
    3. 11.3. Print/Scan Formats
    4. 11.4. Input and Output to Strings
    5. 11.5. File I/O
  20. Chapter 12. Math, Time, and Other Library Functions
    1. 12.1. Trigonometric Functions
    2. 12.2. Other Math Functions
    3. 12.3. The C Date and Time Library
    4. 12.4. String-to-Number Conversions
    5. 12.5. Memory-Allocation Functions
    6. 12.6. Standard C Randomization Functions
    7. 12.7. Searching and Sorting Functions
    8. 12.8. Other Standard C Library Functions
    9. 12.9. Sample App: Idiot Savant
    10. Exercises
  21. Chapter 13. C++ I/O Stream Classes
    1. 13.1. The Basics of C++ I/O Streams
    2. 13.2. Reading a Line of Input with getline
    3. 13.3. The C++ Stream-Class Hierarchy
    4. 13.4. Stream Objects: Manipulators and Flags
    5. 13.5. Stream Member Functions (General Purpose)
    6. 13.6. File Stream Operations
    7. 13.7. Reading and Writing String Streams
    8. 13.8. Overloading Shift Operators for Your Classes
    9. 13.9. Sample App: Text File Reader
    10. Exercises
  22. Chapter 14. The C++ STL String Class
    1. 14.1. Overview of the String Class
    2. 14.2. String Class Constructors
    3. 14.3. String Class Operators
    4. 14.4. Concise Summary of Member Functions
    5. 14.5. Member Functions in Detail
    6. 14.6. String Class Iterators
    7. 14.7. Wide-Character String Class (basic_string)
  23. Chapter 15. Introduction to STL (vector, deque)
    1. 15.1. A Tour of the Container Templates
    2. 15.2. Introduction to Iterators
    3. 15.3. The vector Template
    4. 15.4. The deque Template
    5. 15.5. The bitset Template
    6. 15.6. Sample App: Alpha File Organizer
    7. Exercises
  24. Chapter 16. STL Sequence Containers (List)
    1. 16.1. Sorting Elements (Strict Weak Ordering)
    2. 16.2. The list Template
    3. 16.3. The stack Template
    4. 16.4. The queue Template
    5. 16.5. The priority_queue Template
    6. 16.6. Sample App: Find the Median
    7. Exercises
  25. Chapter 17. STL Associated Containers (map, set)
    1. 17.1. The pair Template
    2. 17.2. The map Template
    3. 17.3. The set Template
    4. 17.4. The multimap Template
    5. 17.5. The multiset Template
    6. 17.6. Unordered Containers (C++11)
    7. 17.7. Sample App: Guess-the-Word Game
    8. Exercises
  26. Chapter 18. STL Algorithms
    1. 18.1. STL Algorithms: General Concepts
    2. 18.2. Using Lambda Functions (C++11)
    3. 18.3. Algorithms and Iterators
    4. 18.4. Insert Iterators
    5. 18.5. Sample App: Finding the Median
    6. 18.6. Concise Summaries of Algorithms
    7. 18.7. Detailed Descriptions of Algorithms
  27. Chapter 19. C++11 Randomization Library
    1. 19.1. Issues in Randomization
    2. 19.2. A Better Randomization Scheme
    3. 19.3. Common Engines
    4. 19.4. Common Distributions
    5. 19.5. Operations on Engines
    6. 19.6. Operations on Distributions
    7. 19.7. Sample App: Dice Game
    8. Exercises
  28. Chapter 20. C++11 Regular-Expression Library
    1. 20.1. Overview of C++11 Regular Expressions
    2. 20.2. Dealing with Escape Sequences (\)
    3. 20.3. Constructing a RegEx String
    4. 20.4. Matching and Searching Functions
    5. 20.5. “Find All,” or Iterative, Searches
    6. 20.6. Replacing Text
    7. 20.7. String Tokenizing
    8. 20.8. Catching RegEx Exceptions
    9. 20.9. Sample App: RPN Calculator
    10. Exercises
  29. Appendix A. A Painless Introduction to Rvalue References (C++11)
    1. A.1. The Trouble with Copying
    2. A.2. Move Semantics: C++11 to the Rescue!
    3. A.3. Rvalue Refs in a User’s String Class
    4. A.4. Verifying Runtime-Performance Improvement
    5. A.5. Rvalues and Contained Objects
    6. A.6. References Reconsidered: Rvalues and Lvalues
  30. Appendix B. Summary of New Features in C++11
    1. B.1. Improvements in Object Construction
    2. B.2. Other Core-Language Enhancements
    3. B.3. Other New Keywords
    4. B.4. Extensions to the Standard Library
  31. Appendix C. ASCII Codes
  32. Index