{"product_id":"big-c-isbn-9781119739678","title":"Big C++","description":"\u003cp\u003e\u003cb\u003e\u003ci\u003eBig C++: Late Objects,\u003c\/i\u003e 3rd Edition\u003c\/b\u003e focuses on the essentials of effective learning and is suitable for a two-semester introduction to programming sequence. This text requires no prior programming experience and only a modest amount of high school algebra.  It provides an approachable introduction to fundamental programming techniques and design skills, helping students master basic concepts and become competent coders.  The second half covers algorithms and data structures at a level suitable for beginning students.  Horstmann and Budd combine their professional and academic experience to guide the student from the basics to more advanced topics and contemporary applications such as GUIs and XML programming. More than a reference, Big C++ provides well-developed exercises, examples, and case studies that engage students in the details of useful C++ applications.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e \u003cp\u003eChoosing the enhanced eText format allows students to develop their coding skills using targeted, progressive interactivities designed to integrate with the eText.  All sections include built-in activities, open-ended review exercises, programming exercises, and projects to help students practice programming and build confidence. These activities go far beyond simplistic multiple-choice questions and animations. They have been designed to guide students along a learning path for mastering the complexities of programming. Students demonstrate comprehension of programming structures, then practice programming with simple steps in scaffolded settings, and finally write complete, automatically graded programs.\u003c\/p\u003e \u003cp\u003eThe perpetual access VitalSource Enhanced eText, when integrated with your school’s learning management system, provides the capability to monitor student progress in VitalSource SCORECenter and track grades for homework or participation.\u003c\/p\u003e \u003cp\u003e*Enhanced eText and interactive functionality available through select vendors and may require LMS integration approval for SCORECenter.\u003c\/p\u003e \u003cp\u003ePreface iii\u003c\/p\u003e \u003cp\u003eSpecial Features xxiv\u003c\/p\u003e \u003cp\u003e\u003cb\u003e1 Introduction 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 What is Programming? 2\u003c\/p\u003e \u003cp\u003e1.2 The Anatomy of a Computer 3\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Computers are Everywhere 5\u003c\/p\u003e \u003cp\u003e1.3 Machine Code and Programming Languages 5\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Standards Organizations 7\u003c\/p\u003e \u003cp\u003e1.4 Becoming Familiar with Your Programming Environment 7\u003c\/p\u003e \u003cp\u003ePT 1 Backup Copies 10\u003c\/p\u003e \u003cp\u003e1.5 Analyzing Your First Program 11\u003c\/p\u003e \u003cp\u003eCE 1 Omitting Semicolons 13\u003c\/p\u003e \u003cp\u003eST 1 Escape Sequences 13\u003c\/p\u003e \u003cp\u003e1.6 Errors 14\u003c\/p\u003e \u003cp\u003eCE 2 Misspelling Words 15\u003c\/p\u003e \u003cp\u003e1.7 PROBLEM SOLVING Algorithm Design 16\u003c\/p\u003e \u003cp\u003eThe Algorithm Concept 16\u003c\/p\u003e \u003cp\u003eAn Algorithm for Solving an Investment Problem 17\u003c\/p\u003e \u003cp\u003ePseudocode 18\u003c\/p\u003e \u003cp\u003eFrom Algorithms to Programs 19\u003c\/p\u003e \u003cp\u003eHT 1 Describing an Algorithm with Pseudocode 19\u003c\/p\u003e \u003cp\u003eWE 1 Writing an Algorithm for Tiling a Floor 21\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 Fundamental Data Types 25\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Variables 26\u003c\/p\u003e \u003cp\u003eVariable Definitions 26\u003c\/p\u003e \u003cp\u003eNumber Types 28\u003c\/p\u003e \u003cp\u003eVariable Names 29\u003c\/p\u003e \u003cp\u003eThe Assignment Statement 30\u003c\/p\u003e \u003cp\u003eConstants 31\u003c\/p\u003e \u003cp\u003eComments 31\u003c\/p\u003e \u003cp\u003eCE 1 Using Undefined Variables 33\u003c\/p\u003e \u003cp\u003eCE 2 Using Uninitialized Variables 33\u003c\/p\u003e \u003cp\u003ePT 1 Choose Descriptive Variable Names 33\u003c\/p\u003e \u003cp\u003ePT 2 Do Not Use Magic Numbers 34\u003c\/p\u003e \u003cp\u003eST 1 Numeric Types in C++ 34\u003c\/p\u003e \u003cp\u003eST 2 Numeric Ranges and Precisions 35\u003c\/p\u003e \u003cp\u003eST 3 Defining Variables with auto 35\u003c\/p\u003e \u003cp\u003e2.2 Arithmetic 36\u003c\/p\u003e \u003cp\u003eArithmetic Operators 36\u003c\/p\u003e \u003cp\u003eIncrement and Decrement 36\u003c\/p\u003e \u003cp\u003eInteger Division and Remainder 36\u003c\/p\u003e \u003cp\u003eConverting Floating-Point Numbers to Integers 37\u003c\/p\u003e \u003cp\u003ePowers and Roots 38\u003c\/p\u003e \u003cp\u003eCE 3 Unintended Integer Division 39\u003c\/p\u003e \u003cp\u003eCE 4 Unbalanced Parentheses 40\u003c\/p\u003e \u003cp\u003eCE 5 Forgetting Header Files 40\u003c\/p\u003e \u003cp\u003eCE 6 Roundoff Errors 41\u003c\/p\u003e \u003cp\u003ePT 3 Spaces in Expressions 42\u003c\/p\u003e \u003cp\u003eST 4 Casts 42\u003c\/p\u003e \u003cp\u003eST 5 Combining Assignment and Arithmetic 42\u003c\/p\u003e \u003cp\u003eC\u0026amp;S The Pentium Floating-Point Bug 43\u003c\/p\u003e \u003cp\u003e2.3 Input and Output 44\u003c\/p\u003e \u003cp\u003eInput 44\u003c\/p\u003e \u003cp\u003eFormatted Output 45\u003c\/p\u003e \u003cp\u003e2.4 PROBLEM SOLVING First Do It By Hand 47\u003c\/p\u003e \u003cp\u003eWE 1 Computing Travel Time 48\u003c\/p\u003e \u003cp\u003eHT 1 Carrying out Computations 48\u003c\/p\u003e \u003cp\u003eWE 2 Computing the Cost of Stamps 51\u003c\/p\u003e \u003cp\u003e2.5 Strings 51\u003c\/p\u003e \u003cp\u003eThe string Type 51\u003c\/p\u003e \u003cp\u003eConcatenation 52\u003c\/p\u003e \u003cp\u003eString Input 52\u003c\/p\u003e \u003cp\u003eString Functions 52\u003c\/p\u003e \u003cp\u003eC\u0026amp;S International Alphabets and Unicode 55\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 Decisions 59\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 The if Statement 60\u003c\/p\u003e \u003cp\u003eCE 1 A Semicolon After the if Condition 63\u003c\/p\u003e \u003cp\u003ePT 1 Brace Layout 63\u003c\/p\u003e \u003cp\u003ePT 2 Always Use Braces 64\u003c\/p\u003e \u003cp\u003ePT 3 Tabs 64\u003c\/p\u003e \u003cp\u003ePT 4 Avoid Duplication in Branches 65\u003c\/p\u003e \u003cp\u003eST 1 The Conditional Operator 65\u003c\/p\u003e \u003cp\u003e3.2 Comparing Numbers and Strings 66\u003c\/p\u003e \u003cp\u003eCE 2 Confusing = and == 68\u003c\/p\u003e \u003cp\u003eCE 3 Exact Comparison of Floating-Point Numbers 68\u003c\/p\u003e \u003cp\u003ePT 5 Compile with Zero Warnings 69\u003c\/p\u003e \u003cp\u003eST 2 Lexicographic Ordering of Strings 69\u003c\/p\u003e \u003cp\u003eHT 1 Implementing an if Statement 70\u003c\/p\u003e \u003cp\u003eWE 1 Extracting the Middle 72\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Dysfunctional Computerized Systems 72\u003c\/p\u003e \u003cp\u003e3.3 Multiple Alternatives 73\u003c\/p\u003e \u003cp\u003eST 3 The switch Statement 75\u003c\/p\u003e \u003cp\u003e3.4 Nested Branches 76\u003c\/p\u003e \u003cp\u003eCE 4 The Dangling else Problem 79\u003c\/p\u003e \u003cp\u003ePT 6 Hand-Tracing 79\u003c\/p\u003e \u003cp\u003e3.5 PROBLEM SOLVING Flowcharts 81\u003c\/p\u003e \u003cp\u003e3.6 PROBLEM SOLVING Test Cases 83\u003c\/p\u003e \u003cp\u003ePT 7 Make a Schedule and Make Time for Unexpected Problems 84\u003c\/p\u003e \u003cp\u003e3.7 Boolean Variables and Operators 85\u003c\/p\u003e \u003cp\u003eCE 5 Combining Multiple Relational Operators 88\u003c\/p\u003e \u003cp\u003eCE 6 Confusing \u0026amp;\u0026amp; and || Conditions 88\u003c\/p\u003e \u003cp\u003eST 4 Short-Circuit Evaluation of Boolean Operators 89\u003c\/p\u003e \u003cp\u003eST 5 De Morgan’s Law 89\u003c\/p\u003e \u003cp\u003e3.8 APPLICATION Input Validation 90\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Artificial Intelligence 92\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 Loops 95\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e4.1 The while Loop 96\u003c\/p\u003e \u003cp\u003eCE 1 Infinite Loops 100\u003c\/p\u003e \u003cp\u003eCE 2 Don’t Think “Are We There Yet?” 101\u003c\/p\u003e \u003cp\u003eCE 3 Off-by-One Errors 101\u003c\/p\u003e \u003cp\u003eC\u0026amp;S The First Bug 102\u003c\/p\u003e \u003cp\u003e4.2 PROBLEM SOLVING Hand-Tracing 103\u003c\/p\u003e \u003cp\u003e4.3 The for Loop 106\u003c\/p\u003e \u003cp\u003ePT 1 Use for Loops for Their Intended Purpose Only 109\u003c\/p\u003e \u003cp\u003ePT 2 Choose Loop Bounds That Match Your Task 110\u003c\/p\u003e \u003cp\u003ePT 3 Count Iterations 110\u003c\/p\u003e \u003cp\u003e4.4 The do Loop 111\u003c\/p\u003e \u003cp\u003ePT 4 Flowcharts for Loops 111\u003c\/p\u003e \u003cp\u003e4.5 Processing Input 112\u003c\/p\u003e \u003cp\u003eSentinel Values 112\u003c\/p\u003e \u003cp\u003eReading Until Input Fails 114\u003c\/p\u003e \u003cp\u003eST 1 Clearing the Failure State 115\u003c\/p\u003e \u003cp\u003eST 2 The Loop-and-a-Half Problem and the break Statement 116\u003c\/p\u003e \u003cp\u003eST 3 Redirection of Input and Output 116\u003c\/p\u003e \u003cp\u003e4.6 PROBLEM SOLVING Storyboards 117\u003c\/p\u003e \u003cp\u003e4.7 Common Loop Algorithms 119\u003c\/p\u003e \u003cp\u003eSum and Average Value 119\u003c\/p\u003e \u003cp\u003eCounting Matches 120\u003c\/p\u003e \u003cp\u003eFinding the First Match 120\u003c\/p\u003e \u003cp\u003ePrompting Until a Match is Found 121\u003c\/p\u003e \u003cp\u003eMaximum and Minimum 121\u003c\/p\u003e \u003cp\u003eComparing Adjacent Values 122\u003c\/p\u003e \u003cp\u003eHT 1 Writing a Loop 123\u003c\/p\u003e \u003cp\u003eWE 1 Credit Card Processing 126\u003c\/p\u003e \u003cp\u003e4.8 Nested Loops 126\u003c\/p\u003e \u003cp\u003eWE 2 Manipulating the Pixels in an Image 129\u003c\/p\u003e \u003cp\u003e4.9 PROBLEM SOLVING Solve a Simpler Problem First 130\u003c\/p\u003e \u003cp\u003e4.10 Random Numbers and Simulations 134\u003c\/p\u003e \u003cp\u003eGenerating Random Numbers 134\u003c\/p\u003e \u003cp\u003eSimulating Die Tosses 135\u003c\/p\u003e \u003cp\u003eThe Monte Carlo Method 136\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Digital Piracy 138\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 Functions 141\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 Functions as Black Boxes 142\u003c\/p\u003e \u003cp\u003e5.2 Implementing Functions 143\u003c\/p\u003e \u003cp\u003ePT 1 Function Comments 146\u003c\/p\u003e \u003cp\u003e5.3 Parameter Passing 146\u003c\/p\u003e \u003cp\u003ePT 2 Do Not Modify Parameter Variables 148\u003c\/p\u003e \u003cp\u003e5.4 Return Values 148\u003c\/p\u003e \u003cp\u003eCE 1 Missing Return Value 149\u003c\/p\u003e \u003cp\u003eST 1 Function Declarations 150\u003c\/p\u003e \u003cp\u003eHT 1 Implementing a Function 151\u003c\/p\u003e \u003cp\u003eWE 1 Generating Random Passwords 152\u003c\/p\u003e \u003cp\u003eWE 2 Using a Debugger 152\u003c\/p\u003e \u003cp\u003e5.5 Functions Without Return Values 153\u003c\/p\u003e \u003cp\u003e5.6 PROBLEM SOLVING Reusable Functions 154\u003c\/p\u003e \u003cp\u003e5.7 PROBLEM SOLVING Stepwise Refinement 156\u003c\/p\u003e \u003cp\u003ePT 3 Keep Functions Short 161\u003c\/p\u003e \u003cp\u003ePT 4 Tracing Functions 161\u003c\/p\u003e \u003cp\u003ePT 5 Stubs 162\u003c\/p\u003e \u003cp\u003eWE 3 Calculating a Course Grade 163\u003c\/p\u003e \u003cp\u003e5.8 Variable Scope and Global Variables 163\u003c\/p\u003e \u003cp\u003ePT 6 Avoid Global Variables 165\u003c\/p\u003e \u003cp\u003e5.9 Reference Parameters 165\u003c\/p\u003e \u003cp\u003ePT 7 Prefer Return Values to Reference Parameters 169\u003c\/p\u003e \u003cp\u003eST 2 Constant References 170\u003c\/p\u003e \u003cp\u003e5.10 Recursive Functions (Optional) 170\u003c\/p\u003e \u003cp\u003eHT 2 Thinking Recursively 173\u003c\/p\u003e \u003cp\u003eC\u0026amp;S The Explosive Growth of Personal Computers 174\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 Arrays and Vectors 179\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 Arrays 180\u003c\/p\u003e \u003cp\u003eDefining Arrays 180\u003c\/p\u003e \u003cp\u003eAccessing Array Elements 182\u003c\/p\u003e \u003cp\u003ePartially Filled Arrays 183\u003c\/p\u003e \u003cp\u003eCE 1 Bounds Errors 184\u003c\/p\u003e \u003cp\u003ePT 1 Use Arrays for Sequences of Related Values 184\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Computer Viruses 185\u003c\/p\u003e \u003cp\u003e6.2 Common Array Algorithms 185\u003c\/p\u003e \u003cp\u003eFilling 186\u003c\/p\u003e \u003cp\u003eCopying 186\u003c\/p\u003e \u003cp\u003eSum and Average Value 186\u003c\/p\u003e \u003cp\u003eMaximum and Minimum 187\u003c\/p\u003e \u003cp\u003eElement Separators 187\u003c\/p\u003e \u003cp\u003eCounting Matches 187\u003c\/p\u003e \u003cp\u003eLinear Search 188\u003c\/p\u003e \u003cp\u003eRemoving an Element 188\u003c\/p\u003e \u003cp\u003eInserting an Element 189\u003c\/p\u003e \u003cp\u003eSwapping Elements 190\u003c\/p\u003e \u003cp\u003eReading Input 191\u003c\/p\u003e \u003cp\u003eST 1 Sorting with the C++ Library 192\u003c\/p\u003e \u003cp\u003eST 2 A Sorting Algorithm 192\u003c\/p\u003e \u003cp\u003eST 3 Binary Search 193\u003c\/p\u003e \u003cp\u003e6.3 Arrays and Functions 194\u003c\/p\u003e \u003cp\u003eST 4 Constant Array Parameters 198\u003c\/p\u003e \u003cp\u003e6.4 PROBLEM SOLVING Adapting Algorithms 198\u003c\/p\u003e \u003cp\u003eHT 1 Working with Arrays 200\u003c\/p\u003e \u003cp\u003eWE 1 Rolling the Dice 203\u003c\/p\u003e \u003cp\u003e6.5 PROBLEM SOLVING Discovering Algorithms by Manipulating Physical Objects 203\u003c\/p\u003e \u003cp\u003e6.6 Two-Dimensional Arrays 206\u003c\/p\u003e \u003cp\u003eDefining Two-Dimensional Arrays 207\u003c\/p\u003e \u003cp\u003eAccessing Elements 207\u003c\/p\u003e \u003cp\u003eLocating Neighboring Elements 208\u003c\/p\u003e \u003cp\u003eComputing Row and Column Totals 208\u003c\/p\u003e \u003cp\u003eTwo-Dimensional Array Parameters 210\u003c\/p\u003e \u003cp\u003eCE 2 Omitting the Column Size of a Two-Dimensional Array Parameter 212\u003c\/p\u003e \u003cp\u003eWE 2 A World Population Table 213\u003c\/p\u003e \u003cp\u003e6.7 Vectors 213\u003c\/p\u003e \u003cp\u003eDefining Vectors 214\u003c\/p\u003e \u003cp\u003eGrowing and Shrinking Vectors 215\u003c\/p\u003e \u003cp\u003eVectors and Functions 216\u003c\/p\u003e \u003cp\u003eVector Algorithms 216\u003c\/p\u003e \u003cp\u003eTwo-Dimensional Vectors 218\u003c\/p\u003e \u003cp\u003ePT 2 Prefer Vectors over Arrays 219\u003c\/p\u003e \u003cp\u003eST 5 The Range-Based for Loop 219\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 Pointers and Structures 223\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 Defining and Using Pointers 224\u003c\/p\u003e \u003cp\u003eDefining Pointers 224\u003c\/p\u003e \u003cp\u003eAccessing Variables Through Pointers 225\u003c\/p\u003e \u003cp\u003eInitializing Pointers 227\u003c\/p\u003e \u003cp\u003eCE 1 Confusing Pointers with the Data to Which They Point 228\u003c\/p\u003e \u003cp\u003ePT 1 Use a Separate Definition for Each Pointer Variable 229\u003c\/p\u003e \u003cp\u003eST 1 Pointers and References 229\u003c\/p\u003e \u003cp\u003e7.2 Arrays and Pointers 230\u003c\/p\u003e \u003cp\u003eArrays as Pointers 230\u003c\/p\u003e \u003cp\u003ePointer Arithmetic 230\u003c\/p\u003e \u003cp\u003eArray Parameter Variables are Pointers 232\u003c\/p\u003e \u003cp\u003eST 2 Using a Pointer to Step Through an Array 233\u003c\/p\u003e \u003cp\u003eCE 2 Returning a Pointer to a Local Variable 234\u003c\/p\u003e \u003cp\u003ePT 2 Program Clearly, Not Cleverly 234\u003c\/p\u003e \u003cp\u003eST 3 Constant Pointers 235\u003c\/p\u003e \u003cp\u003e7.3 C and C++ Strings 235\u003c\/p\u003e \u003cp\u003eThe char Type 235\u003c\/p\u003e \u003cp\u003eC Strings 236\u003c\/p\u003e \u003cp\u003eCharacter Arrays 237\u003c\/p\u003e \u003cp\u003eConverting Between C and C++ Strings 237\u003c\/p\u003e \u003cp\u003eC++ Strings and the [] Operator 238\u003c\/p\u003e \u003cp\u003eST 4 Working with C Strings 238\u003c\/p\u003e \u003cp\u003e7.4 Dynamic Memory Allocation 240\u003c\/p\u003e \u003cp\u003eCE 3 Dangling Pointers 242\u003c\/p\u003e \u003cp\u003eCE 4 Memory Leaks 243\u003c\/p\u003e \u003cp\u003e7.5 Arrays and Vectors of Pointers 243\u003c\/p\u003e \u003cp\u003e7.6 PROBLEM SOLVING Draw a Picture 246\u003c\/p\u003e \u003cp\u003eHT 1 Working with Pointers 248\u003c\/p\u003e \u003cp\u003eWE 1 Producing a Mass Mailing 249\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Embedded Systems 250\u003c\/p\u003e \u003cp\u003e7.7 Structures 250\u003c\/p\u003e \u003cp\u003eStructured Types 250\u003c\/p\u003e \u003cp\u003eStructure Assignment and Comparison 251\u003c\/p\u003e \u003cp\u003eFunctions and Structures 252\u003c\/p\u003e \u003cp\u003eArrays of Structures 252\u003c\/p\u003e \u003cp\u003eStructures with Array Members 253\u003c\/p\u003e \u003cp\u003eNested Structures 253\u003c\/p\u003e \u003cp\u003e7.8 Pointers and Structures 254\u003c\/p\u003e \u003cp\u003ePointers to Structures 254\u003c\/p\u003e \u003cp\u003eStructures with Pointer Members 255\u003c\/p\u003e \u003cp\u003eST 5 Smart Pointers 256\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 Streams 259\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e8.1 Reading and Writing Text Files 260\u003c\/p\u003e \u003cp\u003eOpening a Stream 260\u003c\/p\u003e \u003cp\u003eReading from a File 261\u003c\/p\u003e \u003cp\u003eWriting to a File 262\u003c\/p\u003e \u003cp\u003eA File Processing Example 262\u003c\/p\u003e \u003cp\u003e8.2 Reading Text Input 265\u003c\/p\u003e \u003cp\u003eReading Words 265\u003c\/p\u003e \u003cp\u003eReading Characters 266\u003c\/p\u003e \u003cp\u003eReading Lines 267\u003c\/p\u003e \u003cp\u003eCE 1 Mixing \u0026gt;\u0026gt; and getline Input 268\u003c\/p\u003e \u003cp\u003eST 1 Stream Failure Checking 269\u003c\/p\u003e \u003cp\u003e8.3 Writing Text Output 270\u003c\/p\u003e \u003cp\u003eST 2 Unicode, UTF-8, and C++ Strings 272\u003c\/p\u003e \u003cp\u003e8.4 Parsing and Formatting Strings 273\u003c\/p\u003e \u003cp\u003e8.5 Command Line Arguments 274\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Encryption Algorithms 277\u003c\/p\u003e \u003cp\u003eHT 1 Processing Text Files 278\u003c\/p\u003e \u003cp\u003eWE 1 Looking for for Duplicates 281\u003c\/p\u003e \u003cp\u003e8.6 Random Access and Binary Files 281\u003c\/p\u003e \u003cp\u003eRandom Access 281\u003c\/p\u003e \u003cp\u003eBinary Files 282\u003c\/p\u003e \u003cp\u003eProcessing Image Files 282\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Databases and Privacy 286\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9 Classes 289\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e9.1 Object-Oriented Programming 290\u003c\/p\u003e \u003cp\u003e9.2 Implementing a Simple Class 292\u003c\/p\u003e \u003cp\u003e9.3 Specifying the Public Interface of a Class 294\u003c\/p\u003e \u003cp\u003eCE 1 Forgetting a Semicolon 296\u003c\/p\u003e \u003cp\u003e9.4 Designing the Data Representation 297\u003c\/p\u003e \u003cp\u003e9.5 Member Functions 299\u003c\/p\u003e \u003cp\u003eImplementing Member Functions 299\u003c\/p\u003e \u003cp\u003eImplicit and Explicit Parameters 299\u003c\/p\u003e \u003cp\u003eCalling a Member Function from a Member Function 301\u003c\/p\u003e \u003cp\u003ePT 1 All Data Members Should Be Private; Most Member Functions Should Be Public 303\u003c\/p\u003e \u003cp\u003ePT 2 const Correctness 303\u003c\/p\u003e \u003cp\u003e9.6 Constructors 304\u003c\/p\u003e \u003cp\u003eCE 2 Trying to Call a Constructor 306\u003c\/p\u003e \u003cp\u003eST 1 Overloading 306\u003c\/p\u003e \u003cp\u003eST 2 Initializer Lists 307\u003c\/p\u003e \u003cp\u003eST 3 Universal and Uniform Initialization Syntax 308\u003c\/p\u003e \u003cp\u003e9.7 PROBLEM SOLVING Tracing Objects 308\u003c\/p\u003e \u003cp\u003eHT 1 Implementing a Class 310\u003c\/p\u003e \u003cp\u003eWE 1 Implementing a Bank Account Class 314\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Electronic Voting Machines 314\u003c\/p\u003e \u003cp\u003e9.8 PROBLEM SOLVING Discovering Classes 315\u003c\/p\u003e \u003cp\u003ePT 3 Make Parallel Vectors into Vectors of Objects 317\u003c\/p\u003e \u003cp\u003e9.9 Separate Compilation 318\u003c\/p\u003e \u003cp\u003e9.10 Pointers to Objects 322\u003c\/p\u003e \u003cp\u003eDynamically Allocating Objects 322\u003c\/p\u003e \u003cp\u003eThe -\u0026gt; Operator 323\u003c\/p\u003e \u003cp\u003eThe this Pointer 324\u003c\/p\u003e \u003cp\u003e9.11 PROBLEM SOLVING Patterns for Object Data 324\u003c\/p\u003e \u003cp\u003eKeeping a Total 324\u003c\/p\u003e \u003cp\u003eCounting Events 325\u003c\/p\u003e \u003cp\u003eCollecting Values 326\u003c\/p\u003e \u003cp\u003eManaging Properties of an Object 326\u003c\/p\u003e \u003cp\u003eModeling Objects with Distinct States 327\u003c\/p\u003e \u003cp\u003eDescribing the Position of an Object 328\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Open Source and Free Software 329\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10 Inheritance 333\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e10.1 Inheritance Hierarchies 334\u003c\/p\u003e \u003cp\u003e10.2 Implementing Derived Classes 338\u003c\/p\u003e \u003cp\u003eCE 1 Private Inheritance 341\u003c\/p\u003e \u003cp\u003eCE 2 Replicating Base-Class Members 341\u003c\/p\u003e \u003cp\u003ePT 1 Use a Single Class for Variation in Values, Inheritance for Variation in Behavior 342\u003c\/p\u003e \u003cp\u003eST 1 Calling the Base-Class Constructor 342\u003c\/p\u003e \u003cp\u003e10.3 Overriding Member Functions 343\u003c\/p\u003e \u003cp\u003eCE 3 Forgetting the Base-Class Name 345\u003c\/p\u003e \u003cp\u003e10.4 Virtual Functions and Polymorphism 346\u003c\/p\u003e \u003cp\u003eThe Slicing Problem 346\u003c\/p\u003e \u003cp\u003ePointers to Base and Derived Classes 347\u003c\/p\u003e \u003cp\u003eVirtual Functions 348\u003c\/p\u003e \u003cp\u003ePolymorphism 349\u003c\/p\u003e \u003cp\u003ePT 2 Don’t Use Type Tags 352\u003c\/p\u003e \u003cp\u003eCE 4 Slicing an Object 352\u003c\/p\u003e \u003cp\u003eCE 5 Failing to Override a Virtual Function 353\u003c\/p\u003e \u003cp\u003eST 2 Virtual Self-Calls 354\u003c\/p\u003e \u003cp\u003eHT 1 Developing an Inheritance Hierarchy 354\u003c\/p\u003e \u003cp\u003eWE 1 Implementing an Employee Hierarchy for Payroll Processing 359\u003c\/p\u003e \u003cp\u003eC\u0026amp;S Who Controls the Internet? 360\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11 Recursion 363\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e11.1 Triangle Numbers 364\u003c\/p\u003e \u003cp\u003eCE 1 Tracing Through Recursive Functions 367\u003c\/p\u003e \u003cp\u003eCE 2 Infinite Recursion 368\u003c\/p\u003e \u003cp\u003eHT 1 Thinking Recursively 369\u003c\/p\u003e \u003cp\u003eWE 1 Finding Files 372\u003c\/p\u003e \u003cp\u003e11.2 Recursive Helper Functions 372\u003c\/p\u003e \u003cp\u003e11.3 The Efficiency of Recursion 373\u003c\/p\u003e \u003cp\u003e11.4 Permutations 377\u003c\/p\u003e \u003cp\u003e11.5 Mutual Recursion 380\u003c\/p\u003e \u003cp\u003e11.6 Backtracking 383\u003c\/p\u003e \u003cp\u003eWE 2 Towers of Hanoi 389\u003c\/p\u003e \u003cp\u003eC\u0026amp;S The Limits of Computation 390\u003c\/p\u003e \u003cp\u003e\u003cb\u003e12 Sorting and Searching 393\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e12.1 Selection Sort 394\u003c\/p\u003e \u003cp\u003e12.2 Profiling the Selection Sort Algorithm 397\u003c\/p\u003e \u003cp\u003e12.3 Analyzing the Performance of the Selection Sort Algorithm 398\u003c\/p\u003e \u003cp\u003eST 1 Oh, Omega, and Theta 399\u003c\/p\u003e \u003cp\u003eST 2 Insertion Sort 400\u003c\/p\u003e \u003cp\u003e12.4 Merge Sort 402\u003c\/p\u003e \u003cp\u003e12.5 Analyzing the Merge Sort Algorithm 405\u003c\/p\u003e \u003cp\u003eST 3 The Quicksort Algorithm 407\u003c\/p\u003e \u003cp\u003e12.6 Searching 408\u003c\/p\u003e \u003cp\u003eLinear Search 408\u003c\/p\u003e \u003cp\u003eBinary Search 410\u003c\/p\u003e \u003cp\u003ePT 1 Library Functions for Sorting and Binary Search 412\u003c\/p\u003e \u003cp\u003eST 4 Defining an Ordering for Sorting Objects 413\u003c\/p\u003e \u003cp\u003e12.7 PROBLEM SOLVING Estimating the Running Time of an Algorithm 413\u003c\/p\u003e \u003cp\u003eLinear Time 413\u003c\/p\u003e \u003cp\u003eQuadratic Time 414\u003c\/p\u003e \u003cp\u003eThe Triangle Pattern 415\u003c\/p\u003e \u003cp\u003eLogarithmic Time 417\u003c\/p\u003e \u003cp\u003eWE 1 Enhancing the Insertion Sort Algorithm 418\u003c\/p\u003e \u003cp\u003eC\u0026amp;S The First Programmer 418\u003c\/p\u003e \u003cp\u003e\u003cb\u003e13 Advanced C++ 421\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e13.1 Operator Overloading 422\u003c\/p\u003e \u003cp\u003eOperator Functions 422\u003c\/p\u003e \u003cp\u003eOverloading Comparison Operators 425\u003c\/p\u003e \u003cp\u003eInput and Output 425\u003c\/p\u003e \u003cp\u003eOperator Members 426\u003c\/p\u003e \u003cp\u003eST 1 Overloading Increment and Decrement Operators 427\u003c\/p\u003e \u003cp\u003eST 2 Implicit Type Conversions 428\u003c\/p\u003e \u003cp\u003eST 3 Returning References 429\u003c\/p\u003e \u003cp\u003eWE 1 A Fraction Class 430\u003c\/p\u003e \u003cp\u003e13.2 Automatic Memory Management 430\u003c\/p\u003e \u003cp\u003eConstructors That Allocate Memory 430\u003c\/p\u003e \u003cp\u003eDestructors 432\u003c\/p\u003e \u003cp\u003eOverloading the Assignment Operator 433\u003c\/p\u003e \u003cp\u003eCopy Constructors 437\u003c\/p\u003e \u003cp\u003ePT 1 Use Reference Parameters to Avoid Copies 441\u003c\/p\u003e \u003cp\u003eCE 1 Defining a Destructor Without the Other Two Functions of the “Big Three” 442\u003c\/p\u003e \u003cp\u003eST 4 Virtual Destructors 443\u003c\/p\u003e \u003cp\u003eST 5 Suppressing Automatic Generation of Memory Management Functions 443\u003c\/p\u003e \u003cp\u003eST 6 Move Operations 444\u003c\/p\u003e \u003cp\u003eST 7 Shared Pointers 445\u003c\/p\u003e \u003cp\u003eWE 2 Tracing Memory Management of Strings 446\u003c\/p\u003e \u003cp\u003e13.3 Templates 446\u003c\/p\u003e \u003cp\u003eFunction Templates 447\u003c\/p\u003e \u003cp\u003eClass Templates 448\u003c\/p\u003e \u003cp\u003eST 8 Non-Type Template Parameters 450\u003c\/p\u003e \u003cp\u003e\u003cb\u003e14 Linked Lists, Stacks, and Queues 453\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e14.1 Using Linked Lists 454\u003c\/p\u003e \u003cp\u003e14.2 Implementing Linked Lists 459\u003c\/p\u003e \u003cp\u003eThe Classes for Lists, Node, and Iterators 459\u003c\/p\u003e \u003cp\u003eImplementing Iterators 460\u003c\/p\u003e \u003cp\u003eImplementing Insertion and Removal 462\u003c\/p\u003e \u003cp\u003eWE 1 Implementing a Linked List Template 472\u003c\/p\u003e \u003cp\u003e14.3 The Efficiency of List, Array, and Vector Operations 472\u003c\/p\u003e \u003cp\u003e14.4 Stacks and Queues 476\u003c\/p\u003e \u003cp\u003e14.5 Implementing Stacks and Queues 479\u003c\/p\u003e \u003cp\u003eStacks as Linked Lists 479\u003c\/p\u003e \u003cp\u003eStacks as Arrays 482\u003c\/p\u003e \u003cp\u003eQueues as Linked Lists 482\u003c\/p\u003e \u003cp\u003eQueues as Circular Arrays 483\u003c\/p\u003e \u003cp\u003e14.6 Stack and Queue Applications 484\u003c\/p\u003e \u003cp\u003eBalancing Parentheses 484\u003c\/p\u003e \u003cp\u003eEvaluating Reverse Polish Expressions 485\u003c\/p\u003e \u003cp\u003eEvaluating Algebraic Expressions 487\u003c\/p\u003e \u003cp\u003eBacktracking 490\u003c\/p\u003e \u003cp\u003e\u003cb\u003eST 1 \u003c\/b\u003eReverse Polish Notation 492\u003c\/p\u003e \u003cp\u003e\u003cb\u003e15 Sets, Maps, and Hash Tables 495\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e15.1 Sets 496\u003c\/p\u003e \u003cp\u003e15.2 Maps 499\u003c\/p\u003e \u003cp\u003ePT 1 Use the auto Type for Iterators 503\u003c\/p\u003e \u003cp\u003eST 1 Multisets and Multimaps 503\u003c\/p\u003e \u003cp\u003eWE 1 Word Frequency 504\u003c\/p\u003e \u003cp\u003e15.3 Implementing a Hash Table 504\u003c\/p\u003e \u003cp\u003eHash Codes 504\u003c\/p\u003e \u003cp\u003eHash Tables 505\u003c\/p\u003e \u003cp\u003eFinding an Element 507\u003c\/p\u003e \u003cp\u003eAdding and Removing Elements 508\u003c\/p\u003e \u003cp\u003eIterating over a Hash Table 508\u003c\/p\u003e \u003cp\u003eST 2 Implementing Hash Functions 514\u003c\/p\u003e \u003cp\u003eST 3 Open Addressing 516\u003c\/p\u003e \u003cp\u003e\u003cb\u003e16 Tree Structures 519\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e16.1 Basic Tree Concepts 520\u003c\/p\u003e \u003cp\u003e16.2 Binary Trees 524\u003c\/p\u003e \u003cp\u003eBinary Tree Examples 524\u003c\/p\u003e \u003cp\u003eBalanced Trees 526\u003c\/p\u003e \u003cp\u003eA Binary Tree Implementation 527\u003c\/p\u003e \u003cp\u003eWE 1 Building a Huffman Tree 528\u003c\/p\u003e \u003cp\u003e16.3 Binary Search Trees 528\u003c\/p\u003e \u003cp\u003eThe Binary Search Property 529\u003c\/p\u003e \u003cp\u003eInsertion 530\u003c\/p\u003e \u003cp\u003eRemoval 532\u003c\/p\u003e \u003cp\u003eEfficiency of the Operations 533\u003c\/p\u003e \u003cp\u003e16.4 Tree Traversal 538\u003c\/p\u003e \u003cp\u003eInorder Traversal 539\u003c\/p\u003e \u003cp\u003ePreorder and Postorder Traversals 540\u003c\/p\u003e \u003cp\u003eThe Visitor Pattern 541\u003c\/p\u003e \u003cp\u003eDepth-First and Breadth-First Search 542\u003c\/p\u003e \u003cp\u003eTree Iterators 543\u003c\/p\u003e \u003cp\u003e16.5 Red-Black Trees 544\u003c\/p\u003e \u003cp\u003eBasic Properties of Red-Black Trees 544\u003c\/p\u003e \u003cp\u003eInsertion 546\u003c\/p\u003e \u003cp\u003eRemoval 548\u003c\/p\u003e \u003cp\u003eWE 2 Implementing a Red-Black Tree 551\u003c\/p\u003e \u003cp\u003e\u003cb\u003e17 \u003c\/b\u003e\u003cb\u003ePriority Queues and Heaps 553\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e17.1 Priority Queues 554\u003c\/p\u003e \u003cp\u003eWE 1 Simulating a Queue of Waiting Customers 557\u003c\/p\u003e \u003cp\u003e17.2 Heaps 557\u003c\/p\u003e \u003cp\u003e17.3 The Heapsort Algorithm 567\u003c\/p\u003e \u003cp\u003eAppendix A Reserved Word Summary A-1\u003c\/p\u003e \u003cp\u003eAppendix B Operator Summary A-3\u003c\/p\u003e \u003cp\u003eAppendix C Character Codes A-5\u003c\/p\u003e \u003cp\u003eAppendix D C++ Library Summary A-8\u003c\/p\u003e \u003cp\u003eAppendix E C++ Language Coding Guidelines A-12\u003c\/p\u003e \u003cp\u003eAppendix F Number Systems and Bit and Shift Operations A-19\u003c\/p\u003e \u003cp\u003eGlossary G-1\u003c\/p\u003e \u003cp\u003eIndex I-1\u003c\/p\u003e \u003cp\u003eCredits C-1\u003c\/p\u003e \u003cp\u003eQuick Reference C-2\u003c\/p\u003e","brand":"Wiley","offers":[{"title":"Default Title","offer_id":47988809793765,"sku":"NP9781119739678","price":111.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9781119739678.jpg?v=1761781677","url":"https:\/\/k12savings.com\/products\/big-c-isbn-9781119739678","provider":"K12savings","version":"1.0","type":"link"}