| 作者 |
| [美]本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup) |
| 丛书名 |
| 计算机科学丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787111633280 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 在《C++导学(第二版)》中,C++的创造者本贾尼·斯特劳斯特鲁普描述了现代C++语言的构成。这本简洁、自成体系的导引书籍包含了大多数主要C++语言特性和主要标准库组件——当然,并未深入介绍,而是给予程序员一个有意义的语言概述、一些关键的例子以及起步阶段的实用帮助。 |
| 目录 |
| 出版者的话 译者序 前言 第1章 基础知识 1 1.1 引言 1 1.2 程序 1 1.3 函数 3 1.4 类型、变量和算术运算 4 1.4.1 算术运算 5 1.4.2 初始化 6 1.5 作用域和生命周期 7 1.6 常量 8 1.7 指针、数组和引用 9 1.8 检验 12 1.9 映射到硬件 14 1.9.1 赋值 14 1.9.2 初始化 15 1.10 建议 16 第2章 用户自定义类型 18 2.1 引言 18 2.2 结构 18 2.3 类 20 2.4 联合 21 2.5 枚举 22 2.6 建议 23 第3章 模块化 25 3.1 引言 25 3.2 分别编译 26 3.3 模块(C++20) 27 3.4 名字空间 29 3.5 错误处理 30 3.5.1 异常 30 3.5.2 不变式 32 3.5.3 错误处理替代 33 3.5.4 合约 35 3.5.5 静态断言 35 3.6 函数参数和返回值 36 3.6.1 参数传递 36 3.6.2 返回值 37 3.6.3 结构化绑定 39 3.7 建议 40 第4章 类 41 4.1 引言 41 4.2 具体类型 42 4.2.1 一种算术类型 42 4.2.2 容器 44 4.2.3 初始化容器 45 4.3 抽象类型 47 4.4 虚函数 49 4.5 类层次 50 4.5.1 层次结构的益处 52 4.5.2 层次漫游 53 4.5.3 避免资源泄漏 54 4.6 建议 55 第5章 基本操作 57 5.1 引言 57 5.1.1 基本操作 57 5.1.2 类型转换 59 5.1.3 成员初始值 59 5.2 拷贝和移动 60 5.2.1 拷贝容器 60 5.2.2 移动容器 62 5.3 资源管理 63 5.4 常规操作 65 5.4.1 比较 65 5.4.2 容器操作 65 5.4.3 输入输出操作 66 5.4.4 用户自定义字面值 66 5.4.5 swap() 67 5.4.6 hash 67 5.5 建议 67 第6章 模板 69 6.1 引言 69 6.2 参数化类型 69 6.2.1 约束模板参数(C++20) 71 6.2.2 值模板参数 71 6.2.3 模板参数推断 72 6.3 参数化操作 73 6.3.1 函数模板 73 6.3.2 函数对象 74 6.3.3 lambda表达式 75 6.4 模板机制 77 6.4.1 可变参数模板 78 6.4.2 别名 78 6.4.3 编译时if 79 6.5 建议 80 第7章 概念和泛型编程 81 7.1 引言 81 7.2 概念(C++20) 81 7.2.1 概念的使用 82 7.2.2 基于概念的重载 83 7.2.3 合法代码 84 7.2.4 概念的定义 84 7.3 泛型编程 86 7.3.1 概念的使用 86 7.3.2 使用模板抽象 86 7.4 可变参数模板 88 7.4.1 表达式折叠 89 7.4.2 参数转发 90 7.5 模板编译模型 90 7.6 建议 91 第8章 标准库概览 92 8.1 引言 92 8.2 标准库组件 92 8.3 标准库头文件和名字空间 93 8.4 建议 94 第9章 字符串和正则表达式 95 9.1 引言 95 9.2 字符串 95 9.3 字符串视图 97 9.4 正则表达式 99 9.4.1 搜索 99 9.4.2 正则表达式符号表示 100 9.4.3 迭代器 104 9.5 建议 104 第10章 输入输出 106 10.1 引言 106 10.2 输出 107 10.3 输入 108 10.4 I/O状态 109 10.5 用户自定义类型的I/O 110 10.6 格式化 111 10.7 文件流 112 10.8 字符串流 112 10.9 C风格I/O 113 10.10 文件系统 114 10.11 建议 117 第11章 容器 119 11.1 引言 119 11.2 vector 119 11.2.1 元素 121 11.2.2 范围检查 122 11.3 list 123 11.4 map 125 11.5 unordered_map 125 11.6 容器概述 127 11.7 建议 128 第12章 算法 130 12.1 引言 130 12.2 使用迭代器 131 12.3 迭代器类型 133 12.4 流迭代器 134 12.5 谓词 136 12.6 算法概述 136 12.7 概念(C++20) 137 12.8 容器算法 140 12.9 并行算法 140 12.10 建议 141 第13章 实用功能 142 13.1 引言 142 13.2 资源管理 142 13.2.1 unique_ptr和shared_ptr 143 13.2.2 move()和forward() 145 13.3 范围检查:span 147 13.4 特殊容器 148 13.4.1 array 149 13.4.2 bitset 150 13.4.3 pair和tuple 151 13.5 选择 152 13.5.1 variant 153 13.5.2 optional 154 13.5.3 any 155 13.6 分配器 155 13.7 时间 156 13.8 函数适配器 157 13.8.1 lambda作为适配器 157 13.8.2 mem_fn() 157 13.8.3 function 158 13.9 类型函数 158 13.9.1 iterator_traits 159 13.9.2 类型谓词 161 13.9.3 enable_if 161 13.10 建议 162 第14章 数值 163 14.1 引言 163 14.2 数学函数 163 14.3 数值算法 164 14.4 复数 165 14.5 随机数 166 14.6 向量算术 167 14.7 数值限制 168 14.8 建议 168 第15章 并发 169 15.1 引言 169 15.2 任务和thread 169 15.3 传递参数 170 15.4 返回结果 171 15.5 共享数据 172 15.6 等待事件 173 15.7 任务通信 175 15.7.1 future和promise 175 15.7.2 packaged_task 176 15.7.3 async() 177 15.8 建议 178 第16章 历史和兼容性 180 16.1 历史 180 16.1.1 大事年表 181 16.1.2 早期的C++ 182 16.1.3 ISO C++标准 184 16.1.4 标准和编程风格 186 16.1.5 C++的应用 186 16.2 C++特性演化 186 16.2.1 C++11语言特性 187 16.2.2 C++14语言特性 188 16.2.3 C++17语言特性 188 16.2.4 C++11标准库组件 188 16.2.5 C++14标准库组件 189 16.2.6 C++17标准库组件 189 16.2.7 已弃用特性 190 16.3 C/C++兼容性 190 16.3.1 C和C++是兄弟 191 16.3.2 兼容性问题 192 16.4 参考文献 193 16.5 建议 196 索引 198 |