首页>参考读物>计算机科学与技术>软件与程序设计

C++20编程技巧:98个问题解决方案示例(原书第2版)
作者 : [美]J.伯顿·布朗宁(J. Burton Browning),[英]布鲁斯·萨瑟兰(Bruce Sutherland) 著
译者 : 徐坚 张利明 贺加贝 马晓钰 姚贤明 译
丛书名 : 华章程序员书库
出版日期 : 2022-03-01
ISBN : 978-7-111-42317-1
定价 : 129.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 443
开本 : 16
原书名 : C++20 Recipes: A Problem-Solution Approach, Second Edition
原出版社: Apress
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书带你探索 C++20 的主要新特性,包括模块、概念、飞船运算符和智能指针。本书是一本方便的专题式代码参考指南,涵盖了 C++核心语言标准以及标准模板库 (STL) 中可用的一些代码模板。通过本书,你将学习数字、字符串、日期、时间、类、异常、流、流程和指针等。 此外,你还将看到各种代码示例、C++ 算法模板、并行处理、多线程和数值处理、 3D 图形编程代码等。同时,本书还提供了大量的STL模板,如函数对象模板、适配器模板、分配器模板和扩展模板。

图书特色

图书前言

C++编程语言正在不断地发展和完善。C++始终保持生命力的原因是,它仍然在高性能、可移植的应用程序中扮演着重要的角色。很少有语言像C++一样,可以在如此多的平台上使用,而不依赖运行时环境。这是因为C++是编译型编程语言,C++程序通过编译和链接构建到应用程序二进制文件中。
编译器的选择在当今C++领域尤为重要,这要归因于语言变化的速度。Bjarne Stroustrup于1979年开始开发C++编程语言,当时C++被称为带类的C语言。直到1998年,C++语言才开始正式标准化。2003年发布了更新的标准,此后又经过8年,直到2011年C++11发布,该标准再次进行了更新。此版本进行了大量更新,被称为“现代C++”,以区别于“老式C++”。C++17和C++20摒弃了过时的特性,为语言带来了许多重大的变化。
本书介绍使用Clang编译器、Microsoft Visual Studio(VS)2019和Xcode为C++14到C++20 ISO标准编写的代码。Clang是一个开源编译器,最初是苹果公司的闭源项目。苹果公司于2007年向开源社区发布了该代码,此后,Clang一直在扩大其优势。本书介绍了如何在运行OS X、Windows或Linux(Ubuntu)的计算机上安装和使用Clang。各章的示例已使用Clang 3.5或Visual Studio 2019进行了编译和测试。本书列出的所有应用程序都是免费的,你可以根据需求来使用它们。
致谢
感谢Apress的Steve Anglin、Matthew Moodie和Mark Powers以及制作团队的帮助与支持,非常荣幸与大家共事!

上架指导

计算机\程序设计

封底文字

本书探索C++20的主要新特性(包括module、concept、宇宙飞船运算符和智能指针),涵盖了C++核心语言标准以及标准模板库(STL)中一些可用的代码模板,是一本方便的专题式代码参考指南。
通过本书,你将学习数字、字符串、日期、时间、类、异常、流和指针等的使用技巧,还将学习各种代码示例、C++算法模板、并行处理、多线程、数值处理和3D图形编程等。同时,本书提供了大量的STL模板,如函数对象模板、适配器模板、分配器模板和扩展模板。
通过阅读本书,你将学习:
C++20中的新功能。
如何编写模块。
如何处理文本、数字和类。
如何使用标准库中可用的容器和算法。
如何使用模板、内存、并发、网络、脚本等。
如何进行3D图形编程。

译者序

作为C语言的继承者,C++在2021年6月发布的TIOBE编程语言排行榜中名列前茅,被广泛用于科学计算、网络软件、操作系统和游戏开发等领域。C++是一种通用编程语言,支持多种编程模式,例如面向对象编程、过程化编程和泛型编程等,这些强大的编程模式吸引着大量程序员。为帮助广大读者学习C++,国内外的C++书籍层出不穷,然而,真正能让广大读者学以致用的C++书籍却不多见。究其原因,在于C++知识体系庞大、学习周期长、理论联系实际困难等,从而导致学习者对C++望而却步。因此,急需一本理论与实践完美结合的C++书籍。
C++20标准于2020年12月正式公布,许多新名词、新技术让人耳目一新。这样一来,就更急需一本既基于最新的C++20标准,又结合实际应用的书籍,而本书的出版恰逢其时。本书一改过去C++书籍长篇大论的写作风格,创造性地将每节作为一个专题,每个专题专注于解决一个问题,同时各个专题还可组合使用以解决复杂场景下的更大问题。学习者按专题进行学习,既可掌握主要的知识和技术,又可锻炼解决问题的能力。本书包括98个专题,学习曲线由易到难,从简单的文本处理,渐进式地过渡到并发、网络和3D图形编程等高级技术。
本书的翻译工作得到了云南师范大学“教育技术学”二级学科博士点、云南省智慧教育重点实验室、云南省操晓春专家工作站、云南省高校教育大数据应用技术科技创新团队的支持,得到了“民族教育信息化教育部重点实验室2020开放基金项目”和“云南师范大学2020年度研究生科研创新基金项目”的资助,得到了同行、老师、学生和朋友的帮助与鼓励,在此表示诚挚的谢意。译文力求忠于原著,但由于译者水平有限、时间仓促,译文中难免有疏漏之处,敬请读者批评指正。

译 者
2021年6月于昆明

图书目录

译者序
前言
关于技术审校者
第1章 C++入门1
1.1 寻找文本编辑器2
1.2 在Ubuntu上安装Clang3
1.3 在Windows上安装Clang4
1.4 在macOS上安装Clang5
1.5 构建你的第一个C++程序6
1.6 在Cygwin或Linux中使用GDB调试C++程序8
1.7 在macOS上调试C++程序11
1.8 切换C++编译模式12
1.9 用Boost库构建程序13
1.10 安装Microsoft Visual Studio14
第2章 现代C++16
2.1 初始化变量16
2.2 使用初始化列表初始化对象19
2.3 使用类型推断21
2.4 在函数中使用auto关键字24
2.5 编译时常量的使用26
2.6 lambda的使用29
2.7 与时间有关的程序37
2.8 理解左值引用和右值引用41
2.9 使用托管指针48
第3章 文本的处理55
3.1 用字面量表示代码中的字符串55
3.2 面向用户的本地化文本60
3.3 从文件中读取字符串66
3.4 从XML文件中读取数据69
3.5 在字符串中插入运行时数据74
第4章 数字的处理78
4.1 在C++中使用整数类型78
4.2 用关系运算符做决策82
4.3 用逻辑运算符进行链式决策86
4.4 使用十六进制值88
4.5 二进制运算符的位运算89
4.6 C++20的宇宙飞船运算符96
第5章 类98
5.1 定义一个类98
5.2 向类中添加数据99
5.3 向类中添加方法101
5.4 使用访问修饰符103
5.5 初始化类成员变量106
5.6 类的清理110
5.7 类的拷贝113
5.8 使用移动语义优化代码121
5.9 实现虚函数125
第6章 继承127
6.1 类的继承127
6.2 对派生类中的成员变量和方法进行访问控制129
6.3 隐藏派生类中的方法133
6.4 使用多态基类135
6.5 防止方法重写138
6.6 创建接口140
6.7 多重继承142
第7章 标准模板库的容器145
7.1 存储固定数量的对象145
7.2 存储更多的对象147
7.3 存储一组不断变化的元素154
7.4 将排序对象存储在容器中以便快速查找157
7.5 将未排序的元素存储在容器中以便快速查找165
7.6 使用C++20的“指定初始化”特性168
第8章 标准模板库的算法170
8.1 在容器中使用迭代器定义序列170
8.2 对容器中的每个元素都调用函数175
8.3 查找容器中的最大值和最小值177
8.4 计算序列中某个值的出现次数181
8.5 查找序列中的值184
8.6 排序序列中的元素185
8.7 查找集合中的值187
第9章 模板189
9.1 创建模板函数189
9.2 模板偏特化192
9.3 创建类模板198
9.4 创建单例200
9.5 在编译时计算值202
9.6 concept特性205
第10章 内存207
10.1 静态内存的使用207
10.2 栈内存的使用209
10.3 堆内存的使用213
10.4 自动共享内存的使用215
10.5 创建单实例动态对象218
10.6 创建智能指针222
10.7 通过重载new和delete调试内存问题229
10.8 确定代码更改对性能的影响235
10.9 了解内存选择对性能的影响237
10.10 减少内存碎片问题240
第11章 并发252
11.1 使用线程执行并发任务252
11.2 创建线程作用域变量257
11.3 使用互斥的方式访问共享对象268
11.4 创建等待事件的线程277
11.5 从线程中检索结果282
11.6 在线程之间同步队列消息286
第12章 网络298
12.1 在macOS上设置Berkeley Sockets应用程序298
12.2 在Ubuntu的Eclipse中设置Berkeley Sockets应用程序301
12.3 在Windows的Visual Studio中设置Winsock 2应用程序305
12.4 在两个程序之间创建一个Socket连接309
12.5 在两个程序之间创建网络协议330
第13章 脚本346
13.1 在Visual Studio C++中运行Lua命令346
13.2 在Eclipse中创建一个Lua项目350
13.3 在Xcode中创建一个Lua项目352
13.4 使用Lua编程语言353
13.5 从C++中调用Lua函数362
13.6 从Lua中调用C函数371
13.7 创建异步Lua函数377
第14章 3D图形编程383
14.1 GLFW简介383
14.2 渲染三角形386
14.3 创建纹理四边形396
14.4 从文件中加载几何体416
14.5 使用C++20的module特性433

教学资源推荐
作者: 顾治华 陈天煌 孙珊珊 编著
作者: (美)Harold Abelson,Gerald Jay Sussman,Julie Sussman
作者: [美]兰德尔·海德(Randall Hyde) 著
参考读物推荐
作者: Kevin Hoffman
作者: 董文娟 尚小冬 张军 著
作者: [美]艾德里安·奥斯特洛夫斯基(Adrian Ostrowski),[波]彼得亚雷·加奇科夫斯基(Piotr Gaczkowski) 著
作者: 霍丙乾 著