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

Bibliographic Information

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

Peter Gottschling

(The C++ in-depth series / editor, Bjarne Stroustrup)

Addison-Wesley, c2016

Other Title

Discovering modern C plus plus

Available at  / 1 libraries

Search this Book/Journal

Note

Includes bibliographical references (p. 419-422) and index

Description and Table of Contents

Description

As scientific and engineering projects grow larger and more complex, it is increasingly likely that those projects will be written in C++. With embedded hardware growing more powerful, much of its software is moving to C++, too. Mastering C++ gives you strong skills for programming at nearly every level, from "close to the hardware" to the highest-level abstractions. In short, C++ is a language that scientific and technical practitioners need to know. Peter Gottschling's Discovering Modern C++ is an intensive introduction that guides you smoothly to sophisticated approaches based on advanced features. Gottschling introduces key concepts using examples from many technical problem domains, drawing on his extensive experience training professionals and teaching C++ to students of physics, math, and engineering. This book is designed to help you get started rapidly and then master increasingly robust features, from lambdas to expression templates. You'll also 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, and procedural techniques. By the time you're finished, you'll have mastered all the abstractions you need to write C++ programs with exceptional quality and performance.

Table of Contents

Preface xvii 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 Resume 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

by "Nielsen BookData"

Related Books: 1-1 of 1

Details

Page Top