C++程序设计:原理与实践(进阶篇)(原书第2版)

Book description

C++之父Bjarne Stroustrup经典著作《C++程序设计:原理与实践(原书第2版)》基于最新的C++11和C++14,广泛地介绍了程序设计的基本概念和技术,包括类型系统、算术运算、控制结构、错误处理等;介绍了从键盘和文件获取数值和文本数据的方法以及以图形化方式表示数值数据、文本和几何图形;介绍了C++标准库中的容器(如向量、列表、映射)和算法(如排序、查找和内积)的设计和使用。同时还对C++思想和历史进行了详细的讨论,很好地拓宽了读者的视野。为方便读者循序渐进地学习,加上篇幅所限,《C++程序设计:原理与实践(原书第2版)》分为基础篇和进阶篇两册出版,基础篇包括第1~11章、第17~19章和附录A、C,进阶篇包括第12~16章、第20~27章和附录B、D、E。本书是进阶篇。本书通俗易懂、实例丰富,可作为大学计算机、电子工程、信息科学等相关专业的教材,也可供相关专业人员参考。

Table of contents

  1. 出版者的话
  2. 译者序
  3. 前言
  4. 引言
  5. 作者简介
  6. 第15章 容器和迭代器
    1. 15.1 存储和处理数据
      1. 15.1.1 处理数据
      2. 15.1.2 泛化代码
    2. 15.2 STL理念
    3. 15.3 序列和迭代器
      1. 15.3.1 回到实例
    4. 15.4 链表
      1. 15.4.1 链表操作
      2. 15.4.2 遍历
    5. 15.5 再次泛化vector
      1. 15.5.1 遍历容器
      2. 15.5.2 auto
    6. 15.6 实例:一个简单的文本编辑器
      1. 15.6.1 处理行
      2. 15.6.2 遍历
    7. 15.7 vector、list和string
      1. 15.7.1 insert和erase
    8. 15.8 调整vector类达到STL版本的功能
    9. 15.9 调整内置数组达到STL版本的功能
    10. 15.10 容器概览
      1. 15.10.1 迭代器类别
    11. 简单练习
    12. 思考题
    13. 术语
    14. 习题
    15. 附言
  7. 第16章 算法和映射
    1. 16.1 标准库算法
    2. 16.2 最简单的算法find()
      1. 16.2.1 一些一般的应用
    3. 16.3 通用搜索算法find_if()
    4. 16.4 函数对象
      1. 16.4.1 函数对象的抽象视图
      2. 16.4.2 类成员上的断言
      3. 16.4.3 lambda表达式
    5. 16.5 数值算法
      1. 16.5.1 累积
      2. 16.5.2 泛化accumulate()
      3. 16.5.3 内积
      4. 16.5.4 泛化inner_product()
    6. 16.6 关联容器
      1. 16.6.1 map
      2. 16.6.2 map概览
      3. 16.6.3 另一个map实例
      4. 16.6.4 unordered_map
      5. 16.6.5 set
    7. 16.7 拷贝
      1. 16.7.1 基本拷贝算法
      2. 16.7.2 流迭代器
      3. 16.7.3 使用set保持顺序
      4. 16.7.4 copy_if
    8. 16.8 排序和搜索
    9. 16.9 容器算法
    10. 简单练习
    11. 思考题
    12. 术语
    13. 习题
    14. 附言
  8. 第17章 一个显示模型
    1. 17.1 为什么要使用图形
    2. 17.2 一个基本显示模型
    3. 17.3 第一个例子
    4. 17.4 使用GUI库
    5. 17.5 坐标系
    6. 17.6 Shape
    7. 17.7 使用Shape类
      1. 17.7.1 图形头文件和主函数
      2. 17.7.2 一个几乎空白的窗口
      3. 17.7.3 坐标轴
      4. 17.7.4 绘制函数图
      5. 17.7.5 Polygon
      6. 17.7.6 Rectangle
      7. 17.7.7 填充
      8. 17.7.8 Text
      9. 17.7.9 Image
      10. 17.7.10 更多未讨论的内容
    8. 17.8 让图形程序运行起来
      1. 17.8.1 源文件
    9. 简单练习
    10. 思考题
    11. 术语
    12. 习题
    13. 附言
  9. 第18章 图形类
    1. 18.1 图形类概览
    2. 18.2 Point和Line
    3. 18.3 Lines
    4. 18.4 Color
    5. 18.5 Line_style
    6. 18.6 Open_polyline
    7. 18.7 Closed_polyline
    8. 18.8 Polygon
    9. 18.9 Rectangle
    10. 18.10 管理未命名对象
    11. 18.11 Text
    12. 18.12 Circle
    13. 18.13 Ellipse
    14. 18.14 Marked_polyline
    15. 18.15 Marks
    16. 18.16 Mark
    17. 18.17 Image
    18. 简单练习
    19. 思考题
    20. 术语
    21. 习题
    22. 附言
  10. 第19章 设计图形类
    1. 19.1 设计原则
      1. 19.1.1 类型
      2. 19.1.2 操作
      3. 19.1.3 命名
      4. 19.1.4 可变性
    2. 19.2 Shape
      1. 19.2.1 一个抽象类
      2. 19.2.2 访问控制
      3. 19.2.3 绘制形状
      4. 19.2.4 拷贝和可变性
    3. 19.3 基类和派生类
      1. 19.3.1 对象布局
      2. 19.3.2 类的派生和虚函数的定义
      3. 19.3.3 覆盖
      4. 19.3.4 访问
      5. 19.3.5 纯虚函数
    4. 19.4 面向对象程序设计的好处
    5. 简单练习
    6. 思考题
    7. 术语
    8. 习题
    9. 附言
  11. 第20章 绘制函数图和数据图
    1. 20.1 简介
    2. 20.2 绘制简单函数图
    3. 20.3 Function
      1. 20.3.1 默认参数
      2. 20.3.2 更多例子
      3. 20.3.3 lambda表达式
    4. 20.4 Axis
    5. 20.5 近似
    6. 20.6 绘制数据图
      1. 20.6.1 读取文件
      2. 20.6.2 一般布局
      3. 20.6.3 数据比例
      4. 20.6.4 构造数据图
    7. 简单练习
    8. 思考题
    9. 术语
    10. 习题
    11. 附言
  12. 第21章 图形用户界面
    1. 21.1 用户界面的选择
    2. 21.2 “Next”按钮
    3. 21.3 一个简单的窗口
      1. 21.3.1 回调函数
      2. 21.3.2 等待循环
      3. 21.3.3 lambda表达式作为回调函数
    4. 21.4 Button和其他Widget
      1. 21.4.1 Widget
      2. 21.4.2 Button
      3. 21.4.3 In_box和Out_box
      4. 21.4.4 Menu
    5. 21.5 一个实例
    6. 21.6 控制流反转
    7. 21.7 添加菜单
    8. 21.8 调试GUI代码
    9. 简单练习
    10. 思考题
    11. 术语
    12. 习题
    13. 附言
  13. 第22章 理念和历史
    1. 22.1 历史、理念和专业水平
      1. 22.1.1 程序设计语言的目标和哲学
      2. 22.1.2 编程理念
      3. 22.1.3 风格/范型
    2. 22.2 程序设计语言历史概览
      1. 22.2.1 最早的程序设计语言
      2. 22.2.2 现代程序设计语言的起源
      3. 22.2.3 Algol家族
      4. 22.2.4 Simula
      5. 22.2.5 C
      6. 22.2.6 C++
      7. 22.2.7 今天
      8. 22.2.8 参考资料
    3. 思考题
    4. 术语
    5. 习题
    6. 附言
  14. 第23章 文本处理
    1. 23.1 文本
    2. 23.2 字符串
    3. 23.3 I/O流
    4. 23.4 映射
      1. 23.4.1 实现细节
    5. 23.5 一个问题
    6. 23.6 正则表达式的思想
      1. 23.6.1 原始字符串常量
    7. 23.7 用正则表达式进行搜索
    8. 23.8 正则表达式语法
      1. 23.8.1 字符和特殊字符
      2. 23.8.2 字符集
      3. 23.8.3 重复
      4. 23.8.4 子模式
      5. 23.8.5 可选项
      6. 23.8.6 字符集和范围
      7. 23.8.7 正则表达式错误
    9. 23.9 使用正则表达式进行模式匹配
    10. 23.10 参考文献
    11. 简单练习
    12. 思考题
    13. 术语
    14. 习题
    15. 附言
  15. 第24章 数值计算
    1. 24.1 简介
    2. 24.2 大小、精度和溢出
      1. 24.2.1 数值限制
    3. 24.3 数组
    4. 24.4 C风格的多维数组
    5. 24.5 Matrix库
      1. 24.5.1 矩阵的维和矩阵访问
      2. 24.5.2 一维矩阵
      3. 24.5.3 二维矩阵
      4. 24.5.4 矩阵I/O
      5. 24.5.5 三维矩阵
    6. 24.6 实例:求解线性方程组
      1. 24.6.1 经典的高斯消去法
      2. 24.6.2 选取主元
      3. 24.6.3 测试
    7. 24.7 随机数
    8. 24.8 标准数学函数
    9. 24.9 复数
    10. 24.10 参考文献
    11. 简单练习
    12. 思考题
    13. 术语
    14. 习题
    15. 附言
  16. 第25章 嵌入式系统程序设计
    1. 25.1 嵌入式系统
    2. 25.2 基本概念
      1. 25.2.1 可预测性
      2. 25.2.2 理想
      3. 25.2.3 生活在故障中
    3. 25.3 内存管理
      1. 25.3.1 动态内存分配存在的问题
      2. 25.3.2 动态内存分配的替代方法
      3. 25.3.3 存储池实例
      4. 25.3.4 栈实例
    4. 25.4 地址、指针和数组
      1. 25.4.1 未经检查的类型转换
      2. 25.4.2 一个问题:不正常的接口
      3. 25.4.3 解决方案:接口类
      4. 25.4.4 继承和容器
    5. 25.5 位、字节和字
      1. 25.5.1 位和位运算
      2. 25.5.2 bitset
      3. 25.5.3 有符号数和无符号数
      4. 25.5.4 位运算
      5. 25.5.5 位域
      6. 25.5.6 实例:简单加密
    6. 25.6 编码规范
      1. 25.6.1 编码规范应该是怎样的
      2. 25.6.2 编码原则实例
      3. 25.6.3 实际编码规范
    7. 简单练习
    8. 思考题
    9. 术语
    10. 习题
    11. 附言
  17. 第26章 测试
    1. 26.1 我们想要什么
      1. 26.1.1 警告
    2. 26.2 程序正确性证明
    3. 26.3 测试
      1. 26.3.1 回归测试
      2. 26.3.2 单元测试
      3. 26.3.3 算法和非算法
      4. 26.3.4 系统测试
      5. 26.3.5 寻找不成立的假设
    4. 26.4 测试方案设计
    5. 26.5 调试
    6. 26.6 性能
      1. 26.6.1 计时
    7. 26.7 参考文献
    8. 简单练习
    9. 思考题
    10. 术语
    11. 习题
    12. 附言
  18. 第27章 C语言
    1. 27.1 C和C++:兄弟
      1. 27.1.1 C/C++兼容性
      2. 27.1.2 C不支持的C++特性
      3. 27.1.3 C标准库
    2. 27.2 函数
      1. 27.2.1 不支持函数名重载
      2. 27.2.2 函数参数类型检查
      3. 27.2.3 函数定义
      4. 27.2.4 C++调用C和C调用C++
      5. 27.2.5 函数指针
    3. 27.3 小的语言差异
      1. 27.3.1 struct标签名字空间
      2. 27.3.2 关键字
      3. 27.3.3 定义
      4. 27.3.4 C风格类型转换
      5. 27.3.5 无类型指针的转换
      6. 27.3.6 枚举
      7. 27.3.7 名字空间
    4. 27.4 自由存储空间
    5. 27.5 C风格字符串
      1. 27.5.1 C风格字符串和const
      2. 27.5.2 字节操作
      3. 27.5.3 实例:strcpy()
      4. 27.5.4 一个风格问题
    6. 27.6 输入/输出:stdio
      1. 27.6.1 输出
      2. 27.6.2 输入
      3. 27.6.3 文件
    7. 27.7 常量和宏
    8. 27.8 宏
      1. 27.8.1 类函数宏
      2. 27.8.2 语法宏
      3. 27.8.3 条件编译
    9. 27.9 实例:侵入式容器
    10. 简单练习
    11. 思考题
    12. 术语
    13. 习题
    14. 附言
  19. 附录C 标准库概要
  20. 附录D 安装FLTK
  21. 附录E GUI实现
  22. 术语表
  23. 参考文献

Product information

  • Title: C++程序设计:原理与实践(进阶篇)(原书第2版)
  • Author(s): 本贾尼 斯特劳斯特鲁普
  • Release date: August 2021
  • Publisher(s): Pearson
  • ISBN: 9787111562528

You might also like

book

現代JavaScript實務應用

by Nicolas Bevacqua

深入探討ES6規格與JavaScript的未來發展 ”《現代JavaScript實務應用》一書,帶給你大量的新語法和語義,可讓你的程式碼在表達上更具敘述性。Nicolás化繁為簡,用簡單的範例說明複雜的新功能觀念,這真是令人驚艷,也讓你能夠快速上手。“ -Kent C. Dodds Papal, TC39 想要深入瞭解現代JavaScript,你必須學習它繼承的原始技術規格,也就是ESMAScript 6(ES6)。本書以實務角度探討ES6,且不遺漏技術規格的說明和實作細節的技巧。搭配實務範例,作者Nicolás Bevacque指導你用新的方法處理非同步流程、宣告物件或函式、建立代理器或集合,以及許多其他的特徵功能。 本書是《模組化JavaScript系列》叢書的第一本書,《現代JavaScript實務應用》一書為JavaScript和Node.js開發人員準備了模組化功能設計的課程內容,而功能測試、設計和部署則會在本系列叢書的後續作品中探討。 本書內容包含: ‧JavaScript及其標準發展流程如何演進 ‧重要的ES6變更調整,包含箭頭函式、解構賦值、let和const ‧宣告物件原型的類別語法以及新的Symbol基礎元件 ‧如何用Promise、迭代器、產生器和非同步函式處理流程控制 …

book

C++语言导学(原书第2版)

by 本贾尼 斯特劳斯特鲁普

本书简洁、自成体系,包含C++ 语言大多数主要特性和标准库组件。当然,这些并未深入介绍,而是给予程序员一个有意义的语言概述、一些关键的例子以及起步阶段的实用帮助。本书的目标不是教你如何编程,它也不可能是你精通C++ 的唯一资源。但是,如果你是一名C 或C++ 程序员,希望更加熟悉现在的C++ 语言,或者你是一名精通其他语言的程序员,希望获得有关现代C++ 语言本质和优点的精确描述,本书是最优选择。

book

数字化转型:企业破局的34 个锦囊

by Gary O’Brien, Xiao Guo, Mike Mason

数字化时代正在对各行各业产生广泛而深远的影响。不是简单地将自动化或数字技术嵌入现有产品中去,而是需要重新考虑一切。在这本实操性质的书中,ThoughtWorks的三名专业人士提供了34个锦囊,帮助企业跨越转型,同时提供了相关的技术概念,助力你成为现代数字业务中的高效领导者。 本书包含丰富的实用性建议和案例研究,展示了企业是如何转型的,还揭示了指导企业数字化转型的相关经验教训。虽然转型没有银弹可用,但你将找到在组织中推行变革的有效方法。 通过阅读本书,你将了解: 如何重新调整业务和运营架构,关注客户价值。 如何建立一个响应更快、更敏捷的组织来应对发展速度和环境的不确定性。 如何构建下一代技术能力来作为企业的核心竞争力。

book

硬件创业:从产品创意到成熟企业的成功路线图

by Renee DiResta, Brady Forrest, Ryan Vinyard

技术进步促使制造成本下降,使得专业的创客和初创者能够更容易地从事硬件创业。但具体工作又将从何开始呢?本书便会为你指点迷津,帮助你将产品从创意变为一项成熟的商品,并为你描绘一幅详细的路线图。 本书由硬件领域的三位权威专家编写,带你从想法验证开始,一步步完成融资、市场推广、品牌塑造、原型设计、制造和经销的具体战略。书中还介绍了20余个真实的创业案例研究,分析了它们在生产过程中每个阶段各自的成功或失败。 通过了解潜在用户的需求以验证创意 尽早打造品牌形象,筹划好营销和销售战略 处理好与投资伙伴之间的关系 尽早制造产品原型,并确保自己的设计路线正确 了解产品生产过程,注意单品与规模化生产的差异 通过加速器项目来助推事业发展 学会产品定价、营销和发布的技巧 意识到新公司可能面临的法律问题