Preface       xxiii Chapter 1: Getting Started       1
1.1 Writing a Simple C++ Program  2
1.2 A First Look at Input/Output  5
1.3 A Word About Comments  9
1.4 Flow of Control  11
1.5 Introducing Classes  19
1.6 The Bookstore Program  24
Chapter Summary  26
Defined Terms  26
Â
Part I: The Basics       29
Chapter 2: Variables and Basic Types       31
2.1 Primitive Built-in Types  32
2.2 Variables  41
2.3 Compound Types  50
2.4 const Qualifier  59
2.5 Dealing with Types  67
2.6 Defining Our Own Data Structures  72
Chapter Summary  78
Defined Terms   78
Â
Chapter 3: Strings, Vectors, and Arrays       81
3.1 Namespace using Declarations  82
3.2 Library string Type  84
3.3 Library vector Type  96
3.4 Introducing Iterators   106
3.5 Arrays   113
3.6 Multidimensional Arrays  125
Chapter Summary  131
Defined Terms  131
Â
Chapter 4: Expressions       133
4.1 Fundamentals   134
4.2 Arithmetic Operators  139
4.3 Logical and Relational Operators  141
4.4 Assignment Operators  144
4.5 Increment and Decrement Operators  147
4.6 The Member Access Operators  150
4.7 The Conditional Operator  151
4.8 The Bitwise Operators  152
4.9 The sizeof Operator  156
4.10 Comma Operator   157
4.11 Type Conversions  159
4.12 Operator Precedence Table  166
Chapter Summary  168
Defined Terms  168
Â
Chapter 5: Statements       171
5.1 Simple Statements  172
5.2 Statement Scope  174
5.3 Conditional Statements   174
5.4 Iterative Statements  183
5.5 Jump Statements  190
5.6 try Blocks and Exception Handling  193
Chapter Summary  199
Defined Terms  199
Â
Chapter 6: Functions       201
6.1 Function Basics 202
6.2 Argument Passing  208
6.3 Return Types and the return Statement  222
6.4 Overloaded Functions  230
6.5 Features for Specialized Uses  236
6.6 Function Matching  242
6.7 Pointers to Functions  247
Chapter Summary   251
Defined Terms  251
Â
Chapter 7: Classes       253
7.1 Defining Abstract Data Types  254
7.2 Access Control and Encapsulation  268
7.3 Additional Class Features  271
7.4 Class Scope   282
7.5 Constructors Revisited  288
7.6 static Class Members   300
Chapter Summary  305
Defined Terms   305
Â
Part II: The C++ Library        307
Chapter 8: The IO Library        309
8.1 The IO Classes  310
8.2 File Input and Output  316
8.3 string Streams  321
Chapter Summary  324
Defined Terms   324
Â
Chapter 9: Sequential Containers       325
9.1 Overview of the Sequential Containers  326
9.2 Container Library Overview  328
9.3 Sequential Container Operations   341
9.4 How a vector Grows  355
9.5 Additional string Operations  360
9.6 Container Adaptors  368
Chapter Summary  372
Defined Terms  372
Â
Chapter 10: Generic Algorithms       375
10.1 Overview  376
10.2 A First Look at the Algorithms  378
10.3 Customizing Operations  385
10.4 Revisiting Iterators  401
10.5 Structure of Generic Algorithms  410
10.6 Container-Specific Algorithms   415
Chapter Summary   417
Defined Terms  417
Â
Chapter 11: Associative Containers       419
11.1 Using an Associative Container  420
11.2 Overview of the Associative Containers  423
11.3 Operations on Associative Containers  428
11.4 The Unordered Containers  443
Chapter Summary  447
Defined Terms   447
Â
Chapter 12: Dynamic Memory       449
12.1 Dynamic Memory and Smart Pointers  450
12.2 Dynamic Arrays  476
12.3 Using the Library: A Text-Query Program  484
Chapter Summary  491
Defined Terms  491
Â
Part III: Tools for Class Authors        493
Chapter 13: Copy Control       495
13.1 Copy, Assign, and Destroy  496
13.2 Copy Control and Resource Management   510
13.3 Swap  516
13.4 A Copy-Control Example   519
13.5 Classes that Manage Dynamic Memory   524
13.6 Moving Objects   531
Chapter Summary  549
Defined Terms   549
Â
Chapter 14: Overloaded Operations and Conversions       551
14.1 Basic Concepts  552
14.2 Input and Output Operators   556
14.3 Arithmetic and Relational Operators  560
14.4 Assignment Operators   563
14.5 Subscript Operator   564
14.6 Increment and Decrement Operators  566
14.7 Member Access Operators  569
14.8 Function-Call Operator  571
14.9 Overloading, Conversions, and Operators  579
Chapter Summary  590
Defined Terms   590
Â
Chapter 15: Object-Oriented Programming       591
15.1 OOP: An Overview   592 Â
15.2 Defining Base and Derived Classes  594
15.3 Virtual Functions   603
15.4 Abstract Base Classes   608
15.5 Access Control and Inheritance   511
15.6 Class Scope under Inheritance   617
15.7 Constructors and Copy Control   622
15.8 Containers and Inheritance   630
15.9 Text Queries Revisited   634
Chapter Summary   649
Defined Terms  649
Â
Chapter 16: Templates and Generic Programming       651
16.1 Defining a Template  652
16.2 Template Argument Deduction  678
16.3 Overloading and Templates   694
16.4 Variadic Templates  699
16.5 Template Specializations   706
Chapter Summary  713
Defined Terms  713
Â
Part IV: Advanced Topics       715
Chapter 17: Specialized Library Facilities       717
17.1 The tuple Type   718
17.2 The bitset Type  723
17.3 Regular Expressions  728
17.4 Random Numbers  745
17.5 The IO Library Revisited   752
Chapter Summary   769
Defined Terms   769
Â
Chapter 18: Tools for Large Programs       771
18.1 Exception Handling   772
18.2 Namespaces   785
18.3 Multiple and Virtual Inheritance  802
Chapter Summary   816
Defined Terms   816
Â
Chapter 19: Specialized Tools and Techniques       819
19.1 Controlling Memory Allocation  820
19.2 Run-Time Type Identification  825
19.3 Enumerations  832
19.4 Pointer to Class Member   835
19.5 Nested Classes  843
19.6 Union: A Space-Saving Class   847
19.7 Local Classes   852
19.8 Inherently Nonportable Features   854
Chapter Summary  862
Defined Terms   862
Â
Appendix A: The Library       865
A.1 Library Names and Headers  866
A.2 A Brief Tour of the Algorithms   870
A.3 Random Numbers   882
Â
Index       887
Â