Discovering modern C++ : an intensive course for scientists, engineers, and programmers

著者

    • Gottschling, Peter

書誌事項

Discovering modern C++ : an intensive course for scientists, engineers, and programmers

Peter Gottschling

Addison-Wesley, c2022

2nd ed.

  • pbk.

大学図書館所蔵 件 / 1

この図書・雑誌をさがす

注記

Includes bibliographical references(p. 507-511) and index(P. 513-536)

内容説明・目次

内容説明

Write Powerful, Modern C++ Code for Scientific, Engineering, and Embedded Applications Discovering Modern C++, Second Edition, will help you master valuable skills for programming with C++ at nearly every level, from "close to the hardware" to high-level abstractions. Updated for C++17 and C++ 20, this intensive introduction teaches C++ using realistic examples from diverse technical problem domains. Drawing on extensive experience teaching C++ to physicists, mathematicians, engineers, and students, Peter Gottschling guides you smoothly to sophisticated approaches based on advanced features. Whatever your programming experience, you'll rapidly master increasingly powerful features, from lambdas to expression and variadic templates. Gottschling also shows you how to apply C++'s libraries: both the Standard Template Library (STL) and scientific libraries for arithmetic, linear algebra, differential equations, and graphs. Step by step, you'll learn to write clear and expressive code using object orientation, generics, metaprogramming, and procedural techniques, and master all the abstractions you need to write high-quality, well-performing software. Quickly master core features: variables, operators, expressions, statements, functions, error handling, I/O, arrays, pointers, references, and more Make the most of classes and object-oriented programming, from constructors/destructors to operator overloading and multiple inheritance Apply advanced generic programming and template-based techniques Use C++'s libraries to write more robust and powerful code more quickly Explore metaprogramming in depth, and master cutting-edge optimization techniques Walk through representative scientific projects, and create your own Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

目次

Preface xix Acknowledgments xxv About the Author xxvii Chapter 1: C++ Basics 1 1.1 Our First Program 1 1.2 Variables 4 1.3 Operators 12 1.4 Expressions and Statements 22 1.5 Functions 30 1.6 Error Handling 35 1.7 I/O 41 1.8 Arrays, Pointers, and References 52 1.9 Structuring Software Projects 64 1.10 Exercises 69 Chapter 2: Classes 71 2.1 Program for Universal Meaning, Not Technical Details 71 2.2 Members 73 2.3 Setting Values: Constructors and Assignments 78 2.4 Destructors 105 2.5 Method Generation Summary 111 2.6 Accessing Member Variables 112 2.7 Operator Overloading Design 117 2.8 Exercises 126 Chapter 3: Generic Programming 129 3.1 Function Templates 129 3.2 Namespaces and Function Lookup 138 3.3 Class Templates 147 3.4 Type Deduction and Definition 154 3.5 Template Specialization 162 3.6 Non-Type Parameters for Templates 174 3.7 Functors 177 3.8 Lambda 185 3.9 Variable Templates 190 3.10 Programming with Concept(s) 192 3.11 Variadic Templates 200 3.12 Exercises 208 Chapter 4: Libraries 211 4.1 Standard Template Library 211 4.2 Numerics 239 4.3 Meta-programming 252 4.4 Utilities 256 4.5 The Time Is Now 267 4.6 Concurrency 270 4.7 Scientific Libraries Beyond the Standard 282 4.8 Exercises 285 Chapter 5: Meta-Programming 289 5.1 Let the Compiler Compute 289 5.2 Providing and Using Type Information 297 5.3 Expression Templates 318 5.4 Meta-Tuning: Write Your Own Compiler Optimization 328 5.5 Optimizing with Semantic Concepts 354 5.6 Turing Completeness 359 5.7 Exercises 362 Chapter 6: Object-Oriented Programming 365 6.1 Basic Principles 365 6.2 Removing Redundancy 379 6.3 Multiple Inheritance 380 6.4 Dynamic Selection by Sub-typing 387 6.5 Conversion 389 6.6 Advanced Techniques 397 6.7 Exercises 405 Chapter 7: Scientific Projects 407 7.1 Implementation of ODE Solvers 407 7.2 Creating Projects 418 7.3 Modules 430 7.4 Some Final Words 434 Appendix A: Clumsy Stuff 435 A.1 More Good and Bad Scientific Software 435 A.2 Basics in Detail 441 A.3 Real-World Example: Matrix Inversion 449 A.4 Class Details 458 A.5 Method Generation 462 A.6 Template Details 474 A.7 More on Libraries 479 A.8 Dynamic Selection in Old Style 480 A.9 More about Meta-Programming 481 A.10 Linking to C Code 489 Appendix B: Programming Tools 491 B.1 g++ 491 B.2 Debugging 492 B.3 Memory Analysis 496 B.4 gnuplot 498 B.5 Unix, Linux, and Mac OS 498 Appendix C: Language Definitions 501 C.1 Value Categories 501 C.2 Operator Overview 502 C.3 Conversion Rules 504 Bibliography 507 Subject Index 513

「Nielsen BookData」 より

詳細情報

ページトップへ