发表于2024-11-22
经典原味,基于C++14,编码、工程与科研必修。
深入介绍,快速入门C++,编写高质量、高性能软件。
本书作者为C++标准委员会成员,拥有丰富的C++教学经验。
如今科学工程项目越来越大、越来越复杂,许多项目都采用C++编程语言来完成。本书深入介绍了基于C++编程语言高级功能的复杂方法,旨在帮助您快速入门,实现如表达式模板之类的高级技术。您还将学习如何使用C++编程语言的强大类库:标准模板库(STL)以及用于算法、线性代数、微分方程、图形的科学类库。书中演示了如何使用面向对象、泛型编程、元编程和过程技术来编写清晰明了、富有表达力的软件。当您学完本书,将掌握如何使用C++编程语言来编写高质量、高性能的软件。
Peter Gottschling 热衷于编写前沿的科学计算软件,他希望他的热情也能感染读者。因为职业的缘故他编写了 MTL4(矩阵模板库 4),同时也是 Boost Graph Library 的作者之一。他曾在多个 C++ 课程和专业培训中分享过开发经验,并撰写了本书。
他是 C++ 标准委员会成员,德国程序语言标准委员会副主席,也是德累斯顿 C++ 用户组的创始人。他年轻时在德累斯顿工业大学就读,同时在数学和计算机科学专业上达到了学士水平,并*终获得了计算机科学的博士学位。莱比锡建城一千年时,他离开了学术机构,回到了他*爱的故乡莱比锡,创建了自己的公司 SimuNova。
他已婚并育有四名子女。
Contents
Preface V
NNNN C++ V
Reasons to Read This Book VI
The Beauty and the Beast VI
Languages in Science and Engineering VIII
Typographical Conventions IX
Acknowledgments XI
About the Author XII
Chapter 1 C++ Basics 1
1.1 Our First Program 1
1.2 Variables 3
1.2.1 Constants 5
1.2.2 Literals 6
1.2.3 Non-narrowing Initialization 7
1.2.4 Scopes 8
1.3 Operators 10
1.3.1 Arithmetic Operators 11
1.3.2 Boolean Operators 14
1.3.3 Bitwise Operators 15
1.3.4 Assignment 15
1.3.5 Program Flow 16
1.3.6 Memory Handling 17
1.3.7 Access Operators 17
1.3.8 Type Handling 17
1.3.9 Error Handling 18
1.3.10 Overloading 18
xiii
前言
学习C++ 的理由
阅读本书的理由
美女与野兽
科学和工程领域的计算机语言
体例
致谢
关于作者
1.3.11 Operator Precedence 18
1.3.12 Avoid Side Effects! 18
1.4 Expressions and Statements 21
1.4.1 Expressions 21
1.4.2 Statements 21
1.4.3 Branching 22
1.4.4 Loops 24
1.4.5 goto 27
1.5 Functions 28
1.5.1 Arguments 28
1.5.2 Returning Results 30
1.5.3 Inlining 31
1.5.4 Overloading 31
1.5.5 main Function 33
1.6 Error Handling 34
1.6.1 Assertions 34
1.6.2 Exceptions 35
1.6.3 Static Assertions 40
1.7 I/O 40
1.7.1 Standard Output 40
1.7.2 Standard Input 41
1.7.3 Input/Output with Files 41
1.7.4 Generic Stream Concept 42
1.7.5 Formatting 43
1.7.6 Dealing with I/O Errors 44
1.8 Arrays, Pointers, and References 47
1.8.1 Arrays 47
1.8.2 Pointers 49
1.8.3 Smart Pointers 51
1.8.4 References 55
1.8.5 Comparison between Pointers and References 55
1.8.6 Do Not Refer to Outdated Data! 55
1.8.7 Containers for Arrays 56
1.9 Structuring Software Projects 58
1.9.1 Comments 59
1.9.2 Preprocessor Directives 60
1.10 Exercises 63
1.10.1 Age 63
1.10.2 Arrays and Pointers 64
1.10.3 Read the Header of a Matrix Market File 64
Chapter 2 Classes 65
2.1 Program for Universal Meaning Not for Technical Details 65
2.2 Members 67
2.2.1 Member Variables 67
2.2.2 Accessibility 68
2.2.3 Access Operators 70
2.2.4 The Static Declarator for Classes 70
2.2.5 Member Functions 71
2.3 Setting Values: Constructors and Assignments 72
2.3.1 Constructors 72
2.3.2 Assignment 81
2.3.3 Initializer Lists 82
2.3.4 Uniform Initialization 83
2.3.5 Move Semantics 85
2.4 Destructors 89
2.4.1 Implementation Rules 89
2.4.2 Dealing with Resources Properly 90
2.5 Method Generation R′esum′e 95
2.6 Accessing Member Variables 96
2.6.1 Access Functions 96
2.6.2 Subscript Operator 97
2.6.3 Constant Member Functions 98
2.6.4 Reference-Qualified Members 99
2.7 Operator Overloading Design 100
2.7.1 Be Consistent! 101
2.7.2 Respect the Priority 101
2.7.3 Member or Free Function 102
2.8 Exercises 104
2.8.1 Polynomial 104
2.8.2 Move Assignment 104
2.8.3 Initializer List 105
2.8.4 Resource Rescue 105
Chapter 3 Generic Programming 107
3.1 Function Templates 107
3.1.1 Instantiation 108
3.1.2 Parameter Type Deduction 109
3.1.3 Dealing with Errors in Templates 113
3.1.4 Mixing Types 113
3.1.5 Uniform Initialization 115
3.1.6 Automatic return Type 115
3.2 Namespaces and Function Lookup 115
3.2.1 Namespaces 115
3.2.2 Argument-Dependent Lookup 118
3.2.3 Namespace Qualification or ADL 122
3.3 Class Templates 123
3.3.1 A Container Example 124
3.3.2 Designing Uniform Class and Function Interfaces 125
3.4 Type Deduction and Definition 131
3.4.1 Automatic Variable Type 131
3.4.2 Type of an Expression 132
3.4.3 decltype(auto) 133
3.4.4 Defining Types 134
3.5 A Bit of Theory on Templates: Concepts 136
3.6 Template Specialization 136
3.6.1 Specializing a Class for One Type 137
3.6.2 Specializing and Overloading Functions 139
3.6.3 Partial Specialization 141
3.6.4 Partially Specializing Functions 142
3.7 Non-Type Parameters for Templates 144
3.8 Functors 146
3.8.1 Function-like Parameters 148
3.8.2 Composing Functors 149
3.8.3 Recursion 150
3.8.4 Generic Reduction 153
3.9 Lambda 154
3.9.1 Capture 155
3.9.2 Capture by Value 156
3.9.3 Capture by Reference 157
3.9.4 Generalized Capture 158
3.9.5 Generic Lambdas 159
3.10 Variadic Templates 159
3.11 Exercises 161
3.11.1 String Representation 161
3.11.2 String Representation of Tuples 161
3.11.3 Generic Stack 161
3.11.4 Iterator of a Vector 162
3.11.5 Odd Iterator 162
3.11.6 Odd Range 162
3.11.7 Stack of bool 162
3.11.8 Stack with Custom Size 163
3.11.9 Deducing Non-type Template Arguments 163
3.11.10Trapezoid Rule 163
3.11.11 Functor 164
3.11.12Lambda 164
3.11.13 Implement make_unique 164
Chapter 4 Libraries 165
4.1 Standard Template Library 165
4.1.1 Introductory Example 166
4.1.2 Iterators 166
4.1.3 Containers 171
4.1.4 Algorithms 179
4.1.5 Beyond Iterators 185
4.2 Numerics 186
4.2.1 Complex Numbers 186
4.2.2 Random Number Generators 189
4.3 Meta-programming 198
4.3.1 Limits 198
4.3.2 Type Traits 200
4.4 Utilities 202
4.4.1 Tuple 202
4.4.2 function 205
4.4.3 Reference Wrapper 207
4.5 The Time Is Now 209
4.6 Concurrency 211
4.7 Scientific Libraries Beyond the Standard 213
4.7.1 Other Arithmetics 214
4.7.2 Interval Arithmetic 214
4.7.3 Linear Algebra 214
4.7.4 Ordinary Differential Equations 215
4.7.5 Partial Differential Equations 215
4.7.6 Graph Algorithms 215
4.8 Exercises 215
4.8.1 Sorting by Magnitude 215
4.8.2 STL Container 216
4.8.3 Complex Numbers 216
Chapter 5 Meta-Programming 219
5.1 Let the Compiler Compute 219
5.1.1 Compile-Time Functions 219
5.1.2 Extended Compile-Time Functions 221
5.1.3 Primeness 223
5.1.4 How Constant Are Our Constants? 225
5.2 Providing and Using Type Information 226
5.2.1 Type Traits 226
5.2.2 Conditional Exception Handling 229
5.2.3 A const-Clean View Example 230
5.2.4 Standard Type Traits 237
5.2.5 Domain-Specific Type Properties 237
5.2.6 enable-if 239
5.2.7 Variadic Templates Revised 242
5.3 Expression Templates 245
5.3.1 Simple Operator Implementation 245
5.3.2 An Expression Template Class 248
5.3.3 Generic Expression Templates 251
5.4 Meta-Tuning: Write Your Own Compiler Optimization 253
5.4.1 Classical Fixed-Size Unrolling 254
5.4.2 Nested Unrolling 257
5.4.3 Dynamic Unrolling?CWarm-up 263
5.4.4 Unrolling Vector Expressions 265
5.4.5 Tuning an Expression Template 266
5.4.6 Tuning Reduction Operations 269
5.4.7 Tuning Nested Loops 276
5.4.8 Tuning R′esum′e 282
5.5 Exercises 283
5.5.1 Type Traits 283
5.5.2 Fibonacci Sequence 283
5.5.3 Meta-Program for Greatest Common Divisor 283
5.5.4 Vector Expression Template 284
5.5.5 Meta-List 285
Chapter 6 Object-Oriented Programming 287
6.1 Basic Principles 287
6.1.1 Base and Derived Classes 288
6.1.2 Inheriting Constructors 291
6.1.3 Virtual Functions and Polymorphic Classes 292
6.1.4 Functors via Inheritance 297
6.2 Removing Redundancy 298
6.3 Multiple Inheritance 299
6.3.1 Multiple Parents 300
6.3.2 Common Grandparents 301
6. 现代C++探秘:编码、工程与科研必修(基于C++ 14)(英文版) 下载 mobi epub pdf txt 电子书 格式
现代C++探秘:编码、工程与科研必修(基于C++ 14)(英文版) 下载 mobi pdf epub txt 电子书 格式 2024
现代C++探秘:编码、工程与科研必修(基于C++ 14)(英文版) 下载 mobi epub pdf 电子书过塑了为什么书皮里面还有磨损痕迹,灰尘……
评分过塑了为什么书皮里面还有磨损痕迹,灰尘……
评分。
评分结合工程与科学计算的c++14详细讲解,好书推荐
评分塑封,很不错
评分还行。。
评分还行。。
评分Nice
评分发货送到很快,印刷质量很好,但是书有破损,不知是在仓库还是运输过程中。不好评。第一次收到jd发来这么破损严重的商品。
现代C++探秘:编码、工程与科研必修(基于C++ 14)(英文版) mobi epub pdf txt 电子书 格式下载 2024