ebook img

Fundamentals of C++ Programming PDF

8.9 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Fundamentals of C++ Programming

Fundamentals of C ++ Programming T F A R D Richard L. Halterman School of Computing Southern Adventist University September 25, 2018 Copyright©2008–2018RichardL.Halterman. Allrightsreserved. i Contents 1 TheContextofSoftwareDevelopment 1 1.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 DevelopmentTools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 LearningProgrammingwithC++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 WritingaC++Program 7 2.1 GeneralStructureofaSimpleC++Program . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Editing,Compiling,andRunningtheProgram . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Variationsofoursimpleprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4 TemplateforsimpleC++programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3 ValuesandVariables 15 3.1 IntegerValues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2 VariablesandAssignment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.4 AdditionalIntegerTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5 Floating-pointTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.6 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.7 OtherNumericTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.8 Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.9 EnumeratedTypes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.10 TypeInferencewithauto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.11 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4 ExpressionsandArithmetic 37 ©2018RichardL.Halterman Draftdate:September25,2018 CONTENTS ii 4.1 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2 MixedTypeExpressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3 OperatorPrecedenceandAssociativity . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.4 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.5 Formatting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.6 ErrorsandWarnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.6.1 Compile-timeErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.6.2 Run-timeErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.6.3 LogicErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.6.4 CompilerWarnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.7 ArithmeticExamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.8 Integersvs. Floating-pointNumbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.8.1 IntegerImplementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.8.2 Floating-pointImplementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.9 MoreArithmeticOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.10 BitwiseOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.11 Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.12 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5 ConditionalExecution 85 5.1 Typebool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 5.2 BooleanExpressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.3 TheSimpleifStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 5.4 CompoundStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.5 Theif/elseStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 5.6 CompoundBooleanExpressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.7 NestedConditionals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 5.8 Multi-wayif/elseStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 5.9 ErrorsinConditionalStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 5.10 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6 Iteration 123 6.1 ThewhileStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 6.2 NestedLoops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6.3 AbnormalLoopTermination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 ©2018RichardL.Halterman Draftdate:September25,2018 CONTENTS iii 6.3.1 Thebreakstatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 6.3.2 ThegotoStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 6.3.3 ThecontinueStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 6.4 InfiniteLoops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 6.5 IterationExamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 6.5.1 DrawingaTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 6.5.2 PrintingPrimeNumbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 6.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 7 OtherConditionalandIterativeStatements 159 7.1 TheswitchStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.2 TheConditionalOperator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 7.3 Thedo/whileStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 7.4 TheforStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 7.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 8 UsingFunctions 179 8.1 IntroductiontoUsingFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 8.2 StandardMathFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 8.3 MaximumandMinimum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 8.4 clockFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 8.5 CharacterFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 8.6 RandomNumbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 8.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 9 WritingFunctions 201 9.1 FunctionBasics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 9.2 UsingFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 9.3 PassbyValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 9.4 FunctionExamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 9.4.1 BetterOrganizedPrimeGenerator . . . . . . . . . . . . . . . . . . . . . . . . . . 217 9.4.2 CommandInterpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 9.4.3 RestrictedInput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 9.4.4 BetterDieRollingSimulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 9.4.5 TreeDrawingFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 ©2018RichardL.Halterman Draftdate:September25,2018 CONTENTS iv 9.4.6 Floating-pointEquality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 9.4.7 MultiplicationTablewithFunctions . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.5 OrganizingFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 9.6 CommentingFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.7 CustomFunctionsvs. StandardFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . 234 9.8 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 10 ManagingFunctionsandData 241 10.1 GlobalVariables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 10.2 StaticVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 10.3 OverloadedFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 10.4 DefaultArguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 10.5 Recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 10.6 MakingFunctionsReusable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 10.7 Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 10.8 ReferenceVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 10.9 PassbyReference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 10.9.1 PassbyReferenceviaPointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 10.9.2 PassbyReferenceviaReferences . . . . . . . . . . . . . . . . . . . . . . . . . . 276 10.10Higher-orderFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 10.11Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 11 Sequences 289 11.1 Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 11.1.1 DeclaringandUsingVectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 11.1.2 TraversingaVector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 11.1.3 VectorMethods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 11.1.4 VectorsandFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 11.1.5 MultidimensionalVectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 11.2 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 11.2.1 StaticArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 11.2.2 PointersandArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 11.2.3 DynamicArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 11.2.4 CopyinganArray. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 11.2.5 MultidimensionalArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 ©2018RichardL.Halterman Draftdate:September25,2018 CONTENTS v 11.2.6 CStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 11.2.7 Command-lineArguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 11.3 Vectorsvs. Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 11.4 PrimeGenerationwithaVector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 11.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 12 SortingandSearching 351 12.1 Sorting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 12.2 FlexibleSorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 12.3 Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 12.3.1 LinearSearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 12.3.2 BinarySearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 12.4 VectorPermutations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 12.5 RandomlyPermutingaVector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 12.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 13 StandardC++Classes 383 13.1 StringObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 13.2 Input/OutputStreams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 13.3 FileStreams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 13.4 ComplexNumbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 13.5 BetterPseudorandomNumberGeneration . . . . . . . . . . . . . . . . . . . . . . . . . . 398 13.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 14 CustomObjects 407 14.1 ObjectBasics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 14.2 InstanceVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 14.3 MemberFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 14.4 Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 14.5 DefiningaNewNumericType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 14.6 Encapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 14.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 15 FineTuningObjects 437 15.1 PassingObjectParameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 15.2 PointerstoObjectsandObjectArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 ©2018RichardL.Halterman Draftdate:September25,2018 CONTENTS vi 15.3 ThethisPointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 15.4 constMethods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 15.5 SeparatingMethodDeclarationsandDefinitions . . . . . . . . . . . . . . . . . . . . . . . 446 15.6 PreventingMultipleInclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 15.7 OverloadedOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 15.7.1 OperatorFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 15.7.2 OperatorMethods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 15.8 staticMembers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 15.9 Classesvs. structs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 15.10Friends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 15.11Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 16 BuildingsomeUsefulClasses 475 16.1 ABetterRationalNumberClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 16.2 Stopwatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 16.3 SortingwithLogging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 16.4 AutomatingTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 16.5 ConvenientHigh-qualityPseudorandomNumbers . . . . . . . . . . . . . . . . . . . . . . 491 16.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 17 InheritanceandPolymorphism 495 17.1 I/OStreamInheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 17.2 InheritanceMechanics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 17.3 UsesofInheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 17.4 Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 17.5 AlternativetoInheritanceandPolymorphism . . . . . . . . . . . . . . . . . . . . . . . . 513 17.6 AdapterDesignPattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 17.7 ProtectedMembers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 17.8 FineTuningInheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 17.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 18 MemoryManagement 543 18.1 MemoryAvailabletoC++Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 18.2 ManualMemoryManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 18.3 LinkedLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 ©2018RichardL.Halterman Draftdate:September25,2018 CONTENTS vii 18.4 ResourceManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 18.5 RvalueReferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 18.6 SmartPointers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 19 GenericProgramming 607 19.1 FunctionTemplates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607 19.2 ClassTemplates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 19.3 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 20 TheStandardTemplateLibrary 633 20.1 Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 20.2 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 20.3 IteratorRanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 20.4 LambdaFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 20.5 AlgorithmsintheStandardLibrary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 20.6 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679 21 AssociativeContainers 687 21.1 AssociativeContainers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 21.2 Thestd::setDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 21.3 Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 21.4 Thestd::mapDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 21.5 Thestd::unordered_mapDataType . . . . . . . . . . . . . . . . . . . . . . . . . . 702 21.6 CountingwithAssociativeContainers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704 21.7 GroupingwithAssociativeContainers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 21.8 Memoization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 22 HandlingExceptions 719 22.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 22.2 ExceptionExamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720 22.3 CustomExceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728 22.4 CatchingMultipleExceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730 22.5 ExceptionMechanics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 22.6 UsingExceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736 Appendices 741 ©2018RichardL.Halterman Draftdate:September25,2018 CONTENTS viii A UsingVisualStudio2015toDevelopC++Programs 741 B CommandLineDevelopment 747 B.0.1 VisualStudioCommandLineTools . . . . . . . . . . . . . . . . . . . . . . . . . 748 B.0.2 DevelopingC++ProgramswiththeGNUTools . . . . . . . . . . . . . . . . . . . 750 Bibliography 752 Index 753 ©2018RichardL.Halterman Draftdate:September25,2018

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.