Discovering Modern C++: An Intensive Course for Scientists, Engineers, and Programmers, 1st edition
Published by Addison-Wesley Professional (December 17, 2015) © 2016
- Peter Gottschling
- A print text (hardcover or paperback)Â
- Free shipping
- Also available for purchase as an ebook from all major ebook resellers, including InformIT.com
This an intensive guide for anyone who needs to master the advanced features of C++ quickly. It introduces the powerful features of C++ 14 most useful for scientific and engineering applications, without assuming previous programming or C++ experience. Readers will learn how to take advantage of the powerful libraries available to C++ programmers: both the Standard Template Library (STL) and scientific libraries for arithmetic, linear algebra, differential equations, and graphs. Throughout, Gottschling demonstrates how to write clear and expressive software using object orientation, generics, metaprogramming, concurrency, and procedural techniques.
- Teaches scientists, engineers, and new C++ programmers how to use modern C++ effectively for a variety of applications and problem domains.
- Shows correct clean modern C++ code
- Deals with how to use C++ well without assuming a lot of familiarity with the language
- Includes concise coverage of the newest C++ 14 features
Reasons to Learn C++ Â Â Â Â xvii
Reasons to Read This Book     xviii
The Beauty and the Beast    xviii
Languages in Science and Engineering     xix
Typographical Conventions     xx
Â
Acknowledgments    xxiii
About the Author     xxv
Â
Chapter 1: C++ Basics             1
1.1   Our First Program   1
1.2   Variables   3
1.3   Operators  10
1.4  Expressions and Statements   21
1.5  Functions   28
1.6   Error Handling   34
1.7 Â Â I/O Â Â 40
1.8   Arrays, Pointers, and References   47
1.9   Structuring Software Projects   58
1.10 Exercises   63
Â
Chapter 2: Classes         65
2.1   Program for Universal Meaning Not for Technical Details   65
2.2   Members   67
2.3   Setting Values: Constructors and Assignments   72
2.4   Destructors   89
2.5   Method Generation Résumé   95
2.6  Accessing Member Variables   96
2.7   Operator Overloading Design   100
2.8   Exercises   104
Â
Chapter 3: Generic Programming        107
3.1   Function Templates   107
3.2  Namespaces and Function Lookup   115
3.3   Class Templates   123
3.4   Type Deduction and Definition   131
3.5   A Bit of Theory on Templates: Concepts  136
3.6   Template Specialization   136
3.7   Non-Type Parameters for Templates   144
3.8   Functors  146
3.9   Lambda   154
3.10 Variadic Templates   159
3.11 Exercises  161
Â
Chapter 4: Libraries         165
4.1   Standard Template Library   165
4.2   Numerics   186
4.3   Meta-programming   198
4.4   Utilities   202
4.5   The Time Is Now   209
4.6   Concurrency   211
4.7   Scientific Libraries Beyond the Standard   213
4.8   Exercises   215
Â
Chapter 5: Meta-Programming         219
5.1   Let the Compiler Compute   219
5.2   Providing and Using Type Information   226
5.3   Expression Templates  245
5.4   Meta-Tuning: Write Your Own Compiler Optimization   253
5.5   Exercises   283
Â
Chapter 6: Object-Oriented Programming        287
6.1  Basic Principles   287
6.2   Removing Redundancy   298
6.3   Multiple Inheritance   299
6.4   Dynamic Selection by Sub-typing   306
6.5   Conversion   308
6.6 Â Â CRTPÂ 316
6.7   Exercises   320
Â
Chapter 7: Scientific Projects         321
7.1  Implementation of ODE Solvers   321
7.2  Creating Projects   332
7.3   Some Final Words   345
Â
Appendix A: Clumsy Stuff        347
A.1   More Good and Bad Scientific Software   347
A.2   Basics in Detail   353
A.3   Real-World Example: Matrix Inversion  362
A.4   Class Details   371
A.5   Method Generation   375
A.6   Template Details   386
A.7 Â Â Using std::vector in C++03 Â Â 391
A.8   Dynamic Selection in Old Style   392
A.9 Â Â Meta-Programming Details 392
Â
Appendix B: Programming Tools          403
B.1   gcc   403
B.2   Debugging  404
B.3   Memory Analysis   408
B.4   gnuplot  409
B.5 Â Â Unix, Linux, and Mac OS Â Â 411
Â
Appendix C: Language Definitions         413
C.1   Value Categories   413
C.2   Operator Overview   413
C.3   Conversion Rules  416
Â
Bibliography         419
Â
Index         423
Â
Peter Gottschling is founder of SimuNova, a company that works on developing the Matrix Template Library (MTL4) and offers C++ training. He is a member of the ISO C++ standards committee, vice-chair of Germany’s programming language standards committee, and founder of the C++ User Group in Dresden. He earned his Ph.D. in computer science at Technische Universität Dresden in 2002.
Need help? Get in touch