本节简要介绍作者、本书的内容、入门所需的技术技能,以及完成所有附带活动和练习所需的硬件和软件要求。
C++ 是一种成熟的多范例编程语言,使您能够编写对硬件具有高度控制的高级代码。如今,软件基础设施的重要部分,包括数据库、浏览器、多媒体框架和图用户界面工具包,都是用 C++ 编写的。
这本书首先介绍了 C++ 数据结构,以及如何使用链表、数组、栈和队列来存储数据。在后面的章节中,这本书解释了基本的算法设计范式,例如贪婪方法和分治方法,它们被用来解决各种各样的计算问题。最后,您将学习动态编程的高级技术,以开发书中讨论的几种算法的优化实现。
到本书结束时,您将学会如何用高效且可扩展的 C++ 14 代码实现标准数据结构和算法。
约翰·凯里
作为一名作曲家和钢琴家,约翰·凯里的正规教育几乎完全基于音乐领域。在他的艺术努力中广泛使用了计算机和其他形式的技术后,他在编程和数学领域投入了多年的自学,现在是一名专业的软件工程师。他认为,他不寻常的背景为他提供了一个独特的、相对非学术的软件开发视角。他目前在 Hydratec Industries 公司工作,该公司主要为消防喷淋系统设计人员开发计算机辅助设计软件,用于对提议的设计进行水力计算,以确定其有效性和合法性。
Shreyans Doshi
Shreyans 毕业于艾哈迈达巴德的 Nirma 大学,获得计算机工程技术学士学位。毕业后,他加入金融行业,使用尖端的 C++ 应用开发超低延迟交易系统。在过去的三年里,他一直在用 C++ 设计交易基础设施。
板栗
帕亚斯毕业于 NIT 阿拉哈巴德大学,获得计算机科学技术学士学位。后来,他加入了三星印度研究公司,在那里他帮助开发了蒂森设备的多媒体框架。目前在加州大学河滨分校攻读地理空间数据库和路线规划算法博士学位期间,他担任教学和研究助理,十年来一直在使用 C++ 创建应用。
本书结束时,您将能够:
- 使用哈希表、字典和集合构建应用
- 使用布隆过滤器实现网址缩短服务
- 对字符串数据类型应用常用算法,如 heapsort 和 merge-sort
- 使用 C++ 模板元编程来编写代码库
- 探索现代硬件如何影响程序的实际运行时性能
- 使用适当的现代 C++ 习惯用法,如
std::array
,而不是 C 风格的数组
这本书是为那些想重温基本数据结构和算法设计技术的开发人员或学生准备的。虽然不需要数学背景,但复杂性类和大 O 符号的一些基本知识,以及算法课程的资格,将帮助你从这本书中获得最大收益。假设熟悉 C++ 14 标准。
这本书使用了一种实用的实践方法来解释各种概念。通过练习,这本书表明,理论上表现相似的不同数据结构在现代计算机上的表现却大不相同。这本书没有深入研究任何理论分析,而是专注于基准测试和实际结果。
为了获得最佳的学生体验,我们推荐以下硬件配置:
- 任何带有 Windows、Linux 或 macOS 的入门级 PC/Mac 都足够了
- 处理器:英特尔酷睿 2 双核、阿思龙 X2 或更好
- 内存:4 GB 内存
- 存储:10 GB 可用空间
您还需要提前安装以下软件:
- 操作系统:Windows 7 SP1 32/64 位,Windows 8.1 32/64 位,或 Windows 10 32/64 位,Ubuntu 14.04 或更高版本,或 macOS Sierra 或更高版本
- 浏览器:谷歌 Chrome 还是 Mozilla 火狐
- 任何支持 C++ 14 标准的现代编译器和 IDE(可选)。
在开始阅读本书之前,请安装本书中使用的以下库。您可以在这里找到安装这些的步骤:
安装 Boost 库:
书中的一些练习和活动需要 Boost C++ 库。您可以在以下链接上找到库和安装说明:
windows:https://www . boost . org/doc/libs/1 _ 71 _ 0/more/入门/windows.html
Linux/macOS:https://www . boost . org/doc/libs/1 _ 71 _ 0/more/入门/unix-variants.html
将该类的代码包复制到C:/Code
文件夹。
本书的代码包也托管在 GitHub 上,网址为https://GitHub . com/trainingypbackt/CPP-数据-结构-算法-设计-原理。
我们还有来自 https://github.com/PacktPublishing/丰富的书籍和视频目录的其他代码包。看看他们!