书籍详情
C++20编程技巧:98个问题解决方案示例(原书第2版)
作者:J.伯顿·布朗宁 布鲁斯·萨瑟兰
出版社:机械工业出版社
出版时间:2022-03-01
ISBN:9787111423171
定价:¥129.00
购买这本书可以去
内容简介
本书带你探索 C20 的主要新特性,包括模块、概念、飞船运算符和智能指针。本书是一本方便的专题式代码参考指南,涵盖了 C核心语言标准以及标准模板库 (STL) 中可用的一些代码模板。通过本书,你将学习数字、字符串、日期、时间、类、异常、流、流程和指针等。 此外,你还将看到各种代码示例、C 算法模板、并行处理、多线程和数值处理、 3D 图形编程代码等。同时,本书还提供了大量的STL模板,如函数对象模板、适配器模板、分配器模板和扩展模板。
作者简介
J. 伯顿 布朗宁(J. Burton Browning)1999年在北卡罗来纳州立大学获得博士学位,研究领域涵盖远程学习、编程和教育技术等。他爱好广泛,喜欢编程、摄影、机器人技术、汽车修复、木工、狩猎、阅读、钓鱼和射箭等。他的出版作品涉及跨职能学习团队(CFLT)、乌托邦学校(教师主导的学校模式)、计算机编程(多种语言)、开源软件、医疗统计和数据挖掘、数控等离子切割机操作、教育技术、传记、移动学习、在线教学等主题。布鲁斯 萨瑟兰(Bruce Sutherland)一名来自苏格兰邓迪的电子游戏程序员。2005年,他毕业于阿伯泰大学,获得计算机游戏技术学士(荣誉)学位。毕业后,他就职于4J Studios,参与了《星际迷航:遭遇战》(PS2)、《上古卷轴4:湮没》(PS3)、《星际迷航:帝国霸业》(PS2、Wii)、《杜卡迪摩托》(NDS)和《AMF保龄球:非同寻常》(nds)等项目。2008年7月,他从邓迪搬到了澳大利亚墨尔本,在那里他加入了Visceral Studios,担任《死亡空间》(Xbox 360、PS3、PC)、《教父2》(Xbox360、PS3、PC)和《死亡空间3》(Xbox360、PS3、PC)的软件工程师。他对安卓系统的开发也很感兴趣,还在自己的博客上撰写教程。
目录
译者序
前言
关于技术审校者
第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
前言
关于技术审校者
第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
猜您喜欢