可以朗读
语音朗读
275千字
字数
2024-03-01
发行日期
展开全部
主编推荐语
深入理解现代C++的工作原理,全面掌握C++编程实践。
内容简介
本书介绍现代C++标准。内容按照条目的方式编排,每一个条目包含一个特定语言或库的功能,或C++开发人员面临的常见问题及其使用现代C++的典型解决方案。通过130多个条目,读者将学习掌握核心语言功能和标准库,包括字符串、容器、算法、迭代器、流、正则表达式、线程、文件系统、原子操作、实用程序和ranges。
目录
- 版权信息
- 前言
- 第1章 现代C++的核心特性
- 1.1 尽可能地使用auto关键字
- 1.1.1 使用方式
- 1.1.2 工作原理
- 1.1.3 延伸阅读
- 1.2 创建类型别名和模板别名
- 1.2.1 使用方式
- 1.2.2 工作原理
- 1.2.3 延伸阅读
- 1.3 理解统一初始化
- 1.3.1 准备工作
- 1.3.2 使用方式
- 1.3.3 工作原理
- 1.3.4 更多
- 1.3.5 延伸阅读
- 1.4 了解各种形式的非静态成员初始化
- 1.4.1 使用方式
- 1.4.2 工作原理
- 1.4.3 延伸阅读
- 1.5 控制以及查询对象对齐方式
- 1.5.1 准备工作
- 1.5.2 使用方式
- 1.5.3 工作原理
- 1.5.4 延伸阅读
- 1.6 使用作用域枚举
- 1.6.1 使用方式
- 1.6.2 工作原理
- 1.6.3 延伸阅读
- 1.7 在虚方法中使用override和final关键字
- 1.7.1 准备工作
- 1.7.2 使用方式
- 1.7.3 工作原理
- 1.7.4 延伸阅读
- 1.8 使用基于range的for循环迭代range
- 1.8.1 准备工作
- 1.8.2 使用方式
- 1.8.3 工作原理
- 1.8.4 延伸阅读
- 1.9 对自定义类型使用基于range的for循环
- 1.9.1 准备工作
- 1.9.2 使用方式
- 1.9.3 工作原理
- 1.9.4 延伸阅读
- 1.10 使用explicit构造函数和转换操作符来避免隐式转换
- 1.10.1 准备工作
- 1.10.2 使用方式
- 1.10.3 工作原理
- 1.10.4 延伸阅读
- 1.11 使用匿名命名空间来代替静态全局空间
- 1.11.1 准备工作
- 1.11.2 使用方式
- 1.11.3 工作原理
- 1.11.4 延伸阅读
- 1.12 使用内联命名空间进行符号版本控制
- 1.12.1 准备工作
- 1.12.2 使用方式
- 1.12.3 工作原理
- 1.12.4 延伸阅读
- 1.13 使用结构化绑定处理多值返回
- 1.13.1 准备工作
- 1.13.2 使用方式
- 1.13.3 工作原理
- 1.13.4 更多
- 1.13.5 延伸阅读
- 1.14 使用类模板参数推导简化代码
- 1.14.1 使用方式
- 1.14.2 工作原理
- 1.14.3 延伸阅读
- 第2章 数字和字符串
- 2.1 在数值类型和字符串类型之间进行转换
- 2.1.1 准备工作
- 2.1.2 使用方式
- 2.1.3 工作原理
- 2.1.4 延伸阅读
- 2.2 数值类型的极限和其他属性
- 2.2.1 准备工作
- 2.2.2 使用方式
- 2.2.3 工作原理
- 2.2.4 延伸阅读
- 2.3 生成伪随机数
- 2.3.1 准备工作
- 2.3.2 使用方式
- 2.3.3 工作原理
- 2.3.4 延伸阅读
- 2.4 初始化伪随机数生成器内部状态的所有位
- 2.4.1 准备工作
- 2.4.2 使用方式
- 2.4.3 工作原理
- 2.4.4 延伸阅读
- 2.5 创建cooked的用户自定义字面量
- 2.5.1 准备工作
- 2.5.2 使用方式
- 2.5.3 工作原理
- 2.5.4 更多
- 2.5.5 延伸阅读
- 2.6 创建原始的用户自定义字面量
- 2.6.1 准备工作
- 2.6.2 使用方式
- 2.6.3 工作原理
- 2.6.4 延伸阅读
- 2.7 使用原始字符串字面量来避免转义字符
- 2.7.1 准备工作
- 2.7.2 使用方式
- 2.7.3 工作原理
- 2.7.4 延伸阅读
- 2.8 创建字符串辅助库
- 2.8.1 准备工作
- 2.8.2 使用方式
- 2.8.3 工作原理
- 2.8.4 延伸阅读
- 2.9 使用正则表达式验证字符串的格式
- 2.9.1 准备工作
- 2.9.2 使用方式
- 2.9.3 工作原理
- 2.9.4 更多
- 2.9.5 延伸阅读
- 2.10 使用正则表达式解析字符串的内容
- 2.10.1 准备工作
- 2.10.2 使用方式
- 2.10.3 工作原理
- 2.10.4 延伸阅读
- 2.11 使用正则表达式替换字符串的内容
- 2.11.1 准备工作
- 2.11.2 使用方式
- 2.11.3 工作原理
- 2.11.4 延伸阅读
- 2.12 使用std::string_view代替常量字符串引用
- 2.12.1 准备工作
- 2.12.2 使用方式
- 2.12.3 工作原理
- 2.12.4 延伸阅读
- 2.13 使用std::format格式化文本
- 2.13.1 准备工作
- 2.13.2 使用方式
- 2.13.3 工作原理
- 2.13.4 延伸阅读
- 2.14 使用std::format格式化用户自定义类型
- 2.14.1 准备工作
- 2.14.2 使用方式
- 2.14.3 工作原理
- 2.14.4 延伸阅读
- 第3章 函数
- 3.1 实现默认函数和删除函数
- 3.1.1 准备工作
- 3.1.2 使用方式
- 3.1.3 工作原理
- 3.1.4 延伸阅读
- 3.2 将lambda与标准算法结合使用
- 3.2.1 准备工作
- 3.2.2 使用方式
- 3.2.3 工作原理
- 3.2.4 延伸阅读
- 3.3 使用泛型lambda和模板lambda
- 3.3.1 准备工作
- 3.3.2 使用方式
- 3.3.3 工作原理
- 3.3.4 延伸阅读
- 3.4 编写递归lambda
- 3.4.1 准备工作
- 3.4.2 使用方式
- 3.4.3 工作原理
- 3.4.4 延伸阅读
- 3.5 编写具有可变数量参数的函数模板
- 3.5.1 准备工作
- 3.5.2 使用方式
- 3.5.3 工作原理
- 3.5.4 延伸阅读
- 3.6 使用fold表达式简化可变参数函数模板
- 3.6.1 准备工作
- 3.6.2 使用方式
- 3.6.3 工作原理
- 3.6.4 更多
- 3.6.5 延伸阅读
- 3.7 实现高阶函数map和fold
- 3.7.1 准备工作
- 3.7.2 使用方式
- 3.7.3 工作原理
- 3.7.4 更多
- 3.7.5 延伸阅读
- 3.8 将函数组合成高阶函数
- 3.8.1 准备工作
- 3.8.2 使用方式
- 3.8.3 工作原理
- 3.8.4 更多
- 3.8.5 延伸阅读
- 3.9 统一调用可调用对象
- 3.9.1 准备工作
- 3.9.2 使用方式
- 3.9.3 工作原理
- 3.9.4 延伸阅读
- 第4章 预处理和编译
- 4.1 条件编译源代码
- 4.1.1 准备工作
- 4.1.2 使用方式
- 4.1.3 工作原理
- 4.1.4 延伸阅读
- 4.2 使用间接模式进行预处理器的字符串化和连接
- 4.2.1 准备工作
- 4.2.2 使用方式
- 4.2.3 工作原理
- 4.2.4 延伸阅读
- 4.3 使用static_assert执行编译时断言检查
- 4.3.1 准备工作
- 4.3.2 使用方式
- 4.3.3 工作原理
- 4.3.4 延伸阅读
- 4.4 使用enable_if条件编译类和函数
- 4.4.1 准备工作
- 4.4.2 使用方式
- 4.4.3 工作原理
- 4.4.4 更多
- 4.4.5 延伸阅读
- 4.5 在编译时使用constexpr if选择分支
- 4.5.1 准备工作
- 4.5.2 使用方式
- 4.5.3 工作原理
- 4.5.4 延伸阅读
- 4.6 向编译器提供带有属性的元数据
- 4.6.1 使用方式
- 4.6.2 工作原理
- 4.6.3 延伸阅读
- 第5章 标准库容器、算法和迭代器
- 5.1 使用vector作为默认容器
- 5.1.1 准备工作
- 5.1.2 使用方式
- 5.1.3 工作原理
- 5.1.4 延伸阅读
- 5.2 对固定大小的位序列使用bitset
- 5.2.1 准备工作
- 5.2.2 使用方式
- 5.2.3 工作原理
- 5.2.4 更多
- 5.2.5 延伸阅读
- 5.3 对可变大小的位序列使用vector<bool>
- 5.3.1 准备工作
- 5.3.2 使用方式
- 5.3.3 工作原理
- 5.3.4 更多
- 5.3.5 延伸阅读
- 5.4 使用位操作工具
- 5.4.1 准备工作
- 5.4.2 使用方式
- 5.4.3 工作原理
- 5.4.4 延伸阅读
- 5.5 在range内查找元素
- 5.5.1 准备工作
- 5.5.2 使用方式
- 5.5.3 工作原理
- 5.5.4 延伸阅读
- 5.6 对range进行排序
- 5.6.1 准备工作
- 5.6.2 使用方式
- 5.6.3 工作原理
- 5.6.4 延伸阅读
- 5.7 初始化range
- 5.7.1 准备工作
- 5.7.2 使用方式
- 5.7.3 工作原理
- 5.7.4 延伸阅读
- 5.8 在range上使用set操作
- 5.8.1 准备工作
- 5.8.2 使用方式
- 5.8.3 工作原理
- 5.8.4 延伸阅读
- 5.9 使用迭代器向容器中插入新元素
- 5.9.1 准备工作
- 5.9.2 使用方式
- 5.9.3 工作原理
- 5.9.4 更多
- 5.9.5 延伸阅读
- 5.10 编写自己的随机访问迭代器
- 5.10.1 准备工作
- 5.10.2 使用方式
- 5.10.3 工作原理
- 5.10.4 更多
- 5.10.5 延伸阅读
- 5.11 使用非成员函数访问容器
- 5.11.1 准备工作
- 5.11.2 使用方式
- 5.11.3 工作原理
- 5.11.4 更多
- 5.11.5 延伸阅读
- 第6章 通用工具
- 6.1 使用chrono::duration表示时间间隔
- 6.1.1 准备工作
- 6.1.2 使用方式
- 6.1.3 工作原理
- 6.1.4 更多
- 6.1.5 延伸阅读
- 6.2 使用日历
- 6.2.1 准备工作
- 6.2.2 使用方式
- 6.2.3 工作原理
- 6.2.4 更多
- 6.2.5 延伸阅读
- 6.3 在时区之间转换时间
- 6.3.1 准备工作
- 6.3.2 使用方式
- 6.3.3 工作原理
- 6.3.4 延伸阅读
- 6.4 使用标准时钟测量函数执行时间
- 6.4.1 准备工作
- 6.4.2 使用方式
- 6.4.3 工作原理
- 6.4.4 延伸阅读
- 6.5 为自定义类型生成哈希值
- 6.5.1 准备工作
- 6.5.2 使用方式
- 6.5.3 工作原理
- 6.5.4 延伸阅读
- 6.6 使用std::any存储任意值
- 6.6.1 准备工作
- 6.6.2 使用方式
- 6.6.3 工作原理
- 6.6.4 延伸阅读
- 6.7 使用std::optional存储可选值
- 6.7.1 准备工作
- 6.7.2 使用方式
- 6.7.3 工作原理
- 6.7.4 延伸阅读
- 6.8 使用std::variant作为类型安全联合体
- 6.8.1 准备工作
- 6.8.2 使用方式
- 6.8.3 工作原理
- 6.8.4 更多
- 6.8.5 延伸阅读
- 6.9 访问std::variant
- 6.9.1 准备工作
- 6.9.2 使用方式
- 6.9.3 工作原理
- 6.9.4 延伸阅读
- 6.10 对连续对象序列使用std::span
- 6.10.1 准备工作
- 6.10.2 使用方式
- 6.10.3 工作原理
- 6.10.4 延伸阅读
- 6.11 注册一个在程序正常退出时调用的函数
- 6.11.1 准备工作
- 6.11.2 使用方式
- 6.11.3 工作原理
- 6.11.4 延伸阅读
- 6.12 使用类型特征获取类型的属性
- 6.12.1 准备工作
- 6.12.2 使用方式
- 6.12.3 工作原理
- 6.12.4 更多
- 6.12.5 延伸阅读
- 6.13 自定义类型特征
- 6.13.1 准备工作
- 6.13.2 使用方式
- 6.13.3 工作原理
- 6.13.4 延伸阅读
- 6.14 使用std::conditional在类型之间进行选择
- 6.14.1 准备工作
- 6.14.2 使用方式
- 6.14.3 工作原理
- 6.14.4 延伸阅读
- 第7章 文件和流
- 7.1 读写原始数据
- 7.1.1 准备工作
- 7.1.2 使用方式
- 7.1.3 工作原理
- 7.1.4 更多
- 7.1.5 延伸阅读
- 7.2 读写对象
- 7.2.1 准备工作
- 7.2.2 使用方式
- 7.2.3 工作原理
- 7.2.4 延伸阅读
- 7.3 使用流的本地化设置
- 7.3.1 准备工作
- 7.3.2 使用方式
- 7.3.3 工作原理
- 7.3.4 延伸阅读
- 7.4 使用I/O流操作符控制流的输出
- 7.4.1 准备工作
- 7.4.2 使用方式
- 7.4.3 工作原理
- 7.4.4 延伸阅读
- 7.5 使用货币I/O流操作符
- 7.5.1 准备工作
- 7.5.2 使用方式
- 7.5.3 工作原理
- 7.5.4 延伸阅读
- 7.6 使用时间I/O流操作符
- 7.6.1 准备工作
- 7.6.2 使用方式
- 7.6.3 工作原理
- 7.6.4 延伸阅读
- 7.7 使用文件系统路径
- 7.7.1 准备工作
- 7.7.2 使用方式
- 7.7.3 工作原理
- 7.7.4 延伸阅读
- 7.8 创建、复制和删除文件及目录
- 7.8.1 准备工作
- 7.8.2 使用方式
- 7.8.3 工作原理
- 7.8.4 延伸阅读
- 7.9 从文件中删除内容
- 7.9.1 准备工作
- 7.9.2 使用方式
- 7.9.3 工作原理
- 7.9.4 延伸阅读
- 7.10 检查现有文件或目录的属性
- 7.10.1 准备工作
- 7.10.2 使用方式
- 7.10.3 工作原理
- 7.10.4 延伸阅读
- 7.11 枚举目录的内容
- 7.11.1 准备工作
- 7.11.2 使用方式
- 7.11.3 工作原理
- 7.11.4 更多
- 7.11.5 延伸阅读
- 7.12 查找文件
- 7.12.1 准备工作
- 7.12.2 使用方式
- 7.12.3 工作原理
- 7.12.4 延伸阅读
- 第8章 线程和并发
- 8.1 线程的使用
- 8.1.1 准备工作
- 8.1.2 使用方式
- 8.1.3 工作原理
- 8.1.4 延伸阅读
- 8.2 用互斥量和锁同步访问共享数据
- 8.2.1 准备工作
- 8.2.2 使用方式
- 8.2.3 工作原理
- 8.2.4 延伸阅读
- 8.3 避免使用递归互斥量
- 8.3.1 准备工作
- 8.3.2 使用方式
- 8.3.3 工作原理
- 8.3.4 延伸阅读
- 8.4 处理线程函数抛出的异常
- 8.4.1 准备工作
- 8.4.2 使用方式
- 8.4.3 工作原理
- 8.4.4 延伸阅读
- 8.5 在线程之间发送通知
- 8.5.1 准备工作
- 8.5.2 使用方式
- 8.5.3 工作原理
- 8.5.4 延伸阅读
- 8.6 使用promise和future从线程返回值
- 8.6.1 准备工作
- 8.6.2 使用方式
- 8.6.3 工作原理
- 8.6.4 更多
- 8.6.5 延伸阅读
- 8.7 异步执行函数
- 8.7.1 准备工作
- 8.7.2 使用方式
- 8.7.3 工作原理
- 8.7.4 延伸阅读
- 8.8 使用原子类型
- 8.8.1 准备工作
- 8.8.2 使用方式
- 8.8.3 工作原理
- 8.8.4 延伸阅读
- 8.9 基于线程实现并行map和fold
- 8.9.1 准备工作
- 8.9.2 使用方式
- 8.9.3 工作原理
- 8.9.4 延伸阅读
- 8.10 基于任务实现并行map和fold
- 8.10.1 准备工作
- 8.10.2 使用方式
- 8.10.3 工作原理
- 8.10.4 更多
- 8.10.5 延伸阅读
- 8.11 基于标准并行算法实现并行map和fold
- 8.11.1 准备工作
- 8.11.2 使用方式
- 8.11.3 工作原理
- 8.11.4 更多
- 8.11.5 延伸阅读
- 8.12 使用可结合的线程和取消机制
- 8.12.1 准备工作
- 8.12.2 使用方式
- 8.12.3 工作原理
- 8.12.4 延伸阅读
- 8.13 使用线程同步机制
- 8.13.1 准备工作
- 8.13.2 使用方式
- 8.13.3 工作原理
- 8.13.4 延伸阅读
- 第9章 鲁棒性和性能
- 9.1 使用异常进行错误处理
- 9.1.1 准备工作
- 9.1.2 使用方式
- 9.1.3 工作原理
- 9.1.4 更多
- 9.1.5 延伸阅读
- 9.2 对于不抛出异常的函数使用noexcept
- 9.2.1 使用方式
- 9.2.2 工作原理
- 9.2.3 更多
- 9.2.4 延伸阅读
- 9.3 保证程序的常量正确性
- 9.3.1 使用方式
- 9.3.2 工作原理
- 9.3.3 更多
- 9.3.4 延伸阅读
- 9.4 创建编译时常量表达式
- 9.4.1 准备工作
- 9.4.2 使用方式
- 9.4.3 工作原理
- 9.4.4 更多
- 9.4.5 延伸阅读
- 9.5 创建即时函数
- 9.5.1 使用方式
- 9.5.2 工作原理
- 9.5.3 延伸阅读
- 9.6 执行正确类型转换
- 9.6.1 使用方式
- 9.6.2 工作原理
- 9.6.3 更多
- 9.6.4 延伸阅读
- 9.7 使用unique_ptr拥有单独的内存资源
- 9.7.1 准备工作
- 9.7.2 使用方式
- 9.7.3 工作原理
- 9.7.4 延伸阅读
- 9.8 使用shared_ptr共享内存资源
- 9.8.1 准备工作
- 9.8.2 使用方式
- 9.8.3 工作原理
- 9.8.4 延伸阅读
- 9.9 实现移动语义
- 9.9.1 准备工作
- 9.9.2 使用方式
- 9.9.3 工作原理
- 9.9.4 更多
- 9.9.5 延伸阅读
- 9.10 基于operator<=>的一致性比较
- 9.10.1 准备工作
- 9.10.2 使用方式
- 9.10.3 工作原理
- 9.10.4 延伸阅读
- 第10章 模式和惯用法
- 10.1 在工厂模式中避免重复的if...else语句
- 10.1.1 准备工作
- 10.1.2 使用方式
- 10.1.3 工作原理
- 10.1.4 更多
- 10.1.5 延伸阅读
- 10.2 实现pimpl惯用法
- 10.2.1 准备工作
- 10.2.2 使用方式
- 10.2.3 工作原理
- 10.2.4 更多
- 10.2.5 延伸阅读
- 10.3 实现命名参数惯用法
- 10.3.1 准备工作
- 10.3.2 使用方式
- 10.3.3 工作原理
- 10.3.4 延伸阅读
- 10.4 基于非虚接口惯用法将接口与实现分离
- 10.4.1 准备工作
- 10.4.2 使用方式
- 10.4.3 工作原理
- 10.4.4 延伸阅读
- 10.5 用律师与委托人惯用法处理友元
- 10.5.1 准备工作
- 10.5.2 使用方式
- 10.5.3 工作原理
- 10.5.4 延伸阅读
- 10.6 基于奇异递归模板模式的静态多态
- 10.6.1 准备工作
- 10.6.2 使用方式
- 10.6.3 工作原理
- 10.6.4 更多
- 10.6.5 延伸阅读
- 10.7 实现线程安全单例
- 10.7.1 准备工作
- 10.7.2 使用方式
- 10.7.3 工作原理
- 10.7.4 更多
- 10.7.5 延伸阅读
- 第11章 测试框架
- 11.1 开始使用Boost.Test
- 11.1.1 准备工作
- 11.1.2 使用方式
- 11.1.3 工作原理
- 11.1.4 更多
- 11.1.5 延伸阅读
- 11.2 基于Boost.Test编写和运行测试
- 11.2.1 准备工作
- 11.2.2 使用方式
- 11.2.3 工作原理
- 11.2.4 延伸阅读
- 11.3 基于Boost.Test的断言
- 11.3.1 准备工作
- 11.3.2 使用方式
- 11.3.3 工作原理
- 11.3.4 延伸阅读
- 11.4 基于Boost.Test使用测试固件
- 11.4.1 准备工作
- 11.4.2 使用方式
- 11.4.3 工作原理
- 11.4.4 延伸阅读
- 11.5 基于Boost.Test控制输出
- 11.5.1 准备工作
- 11.5.2 使用方式
- 11.5.3 工作原理
- 11.5.4 更多
- 11.5.5 延伸阅读
- 11.6 开始使用Google Test
- 11.6.1 准备工作
- 11.6.2 使用方式
- 11.6.3 工作原理
- 11.6.4 更多
- 11.6.5 延伸阅读
- 11.7 基于Google Test编写和运行测试
- 11.7.1 准备工作
- 11.7.2 使用方式
- 11.7.3 工作原理
- 11.7.4 延伸阅读
- 11.8 基于Google Test的断言
- 11.8.1 使用方式
- 11.8.2 工作原理
- 11.8.3 延伸阅读
- 11.9 基于Google Test使用测试固件
- 11.9.1 准备工作
- 11.9.2 使用方式
- 11.9.3 工作原理
- 11.9.4 延伸阅读
- 11.10 基于Google Test控制输出
- 11.10.1 准备工作
- 11.10.2 使用方式
- 11.10.3 工作原理
- 11.10.4 延伸阅读
- 11.11 开始使用Catch2
- 11.11.1 准备工作
- 11.11.2 使用方式
- 11.11.3 工作原理
- 11.11.4 更多
- 11.11.5 延伸阅读
- 11.12 基于Catch2编写和运行测试
- 11.12.1 使用方式
- 11.12.2 工作原理
- 11.12.3 延伸阅读
- 11.13 基于Catch2的断言
- 11.13.1 准备工作
- 11.13.2 使用方式
- 11.13.3 工作原理
- 11.13.4 延伸阅读
- 11.14 基于Catch2控制输出
- 11.14.1 准备工作
- 11.14.2 使用方式
- 11.14.3 工作原理
- 11.14.4 延伸阅读
- 第12章 C++20核心特性
- 12.1 模块的使用
- 12.1.1 准备工作
- 12.1.2 使用方式
- 12.1.3 工作原理
- 12.1.4 延伸阅读
- 12.2 理解模块分区
- 12.2.1 准备工作
- 12.2.2 使用方式
- 12.2.3 工作原理
- 12.2.4 更多
- 12.2.5 延伸阅读
- 12.3 基于概念指定模板参数要求
- 12.3.1 准备工作
- 12.3.2 使用方式
- 12.3.3 工作原理
- 12.3.4 更多
- 12.3.5 延伸阅读
- 12.4 使用要求表达式和要求条款
- 12.4.1 准备工作
- 12.4.2 使用方式
- 12.4.3 工作原理
- 12.4.4 延伸阅读
- 12.5 基于range库遍历集合
- 12.5.1 准备工作
- 12.5.2 使用方式
- 12.5.3 工作原理
- 12.5.4 更多
- 12.5.5 延伸阅读
- 12.6 创建你自己的range视图
- 12.6.1 准备工作
- 12.6.2 使用方式
- 12.6.3 工作原理
- 12.6.4 延伸阅读
- 12.7 为异步计算创建协程任务类型
- 12.7.1 准备工作
- 12.7.2 使用方式
- 12.7.3 工作原理
- 12.7.4 更多
- 12.7.5 延伸阅读
- 12.8 为序列值创建协程生成器类型
- 12.8.1 准备工作
- 12.8.2 使用方式
- 12.8.3 工作原理
- 12.8.4 更多
- 12.8.5 延伸阅读
- 参考资料
展开全部
出版方
机械工业出版社
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。