C++20编程技巧:98个问题解决方案示例(原书第2版)
定 价:¥129
中 教 价:¥96.75 (7.50折)
库 存 数: 0
丛 书 名:华章程序员书库
本书带你探索 C 20 的主要新特性,包括模块、概念、飞船运算符和智能指针。本书是一本方便的专题式代码参考指南,涵盖了 C 核心语言标准以及标准模板库 (STL) 中可用的一些代码模板。通过本书,你将学习数字、字符串、日期、时间、类、异常、流、流程和指针等。 此外,你还将看到各种代码示例、C 算法模板、并行处理、多线程和数值处理、 3D 图形编程代码等。同时,本书还提供了大量的STL模板,如函数对象模板、适配器模板、分配器模板和扩展模板。
本书探索C 20的主要新特性(包括module、concept、宇宙飞船运算符和智能指针),涵盖了C 核心语言标准以及标准模板库(STL)中一些可用的代码模板,是一本方便的专题式代码参考指南。
通过本书,你将学习数字、字符串、日期、时间、类、异常、流和指针等的使用技巧,还将学习各种代码示例、C 算法模板、并行处理、多线程、数值处理和3D图形编程等。同时,本书提供了大量的STL模板,如函数对象模板、适配器模板、分配器模板和扩展模板。
通过阅读本书,你将学习:C 20中的新功能。如何编写模块。如何处理文本、数字和类。如何使用标准库中可用的容器和算法。如何使用模板、内存、并发、网络、脚本等。如何进行3D图形编程。
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进行了编译和测试。本书列出的所有应用程序都是免费的,你可以根据需求来使用它们。
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 入门11.1 寻找文本编辑器21.2 在Ubuntu上安装Clang31.3 在Windows上安装Clang41.4 在macOS上安装Clang51.5 构建你的个C 程序61.6 在Cygwin或Linux中使用GDB调试C 程序81.7 在macOS上调试C 程序111.8 切换C 编译模式121.9 用Boost库构建程序131.10 安装Microsoft Visual Studio14第2章 现代C 162.1 初始化变量162.2 使用初始化列表初始化对象192.3 使用类型推断212.4 在函数中使用auto关键字242.5 编译时常量的使用262.6 lambda的使用292.7 与时间有关的程序372.8 理解左值引用和右值引用412.9 使用托管指针48第3章 文本的处理553.1 用字面量表示代码中的字符串553.2 面向用户的本地化文本603.3 从文件中读取字符串663.4 从XML文件中读取数据693.5 在字符串中插入运行时数据74第4章 数字的处理784.1 在C 中使用整数类型784.2 用关系运算符做决策824.3 用逻辑运算符进行链式决策864.4 使用十六进制值884.5 二进制运算符的位运算894.6 C 20的宇宙飞船运算符96第5章 类985.1 定义一个类985.2 向类中添加数据995.3 向类中添加方法1015.4 使用访问修饰符1035.5 初始化类成员变量1065.6 类的清理1105.7 类的拷贝1135.8 使用移动语义优化代码1215.9 实现虚函数125第6章 继承1276.1 类的继承1276.2 对派生类中的成员变量和方法进行访问控制1296.3 隐藏派生类中的方法1336.4 使用多态基类1356.5 防止方法重写1386.6 创建接口1406.7 多重继承142第7章 标准模板库的容器1457.1 存储固定数量的对象1457.2 存储更多的对象1477.3 存储一组不断变化的元素1547.4 将排序对象存储在容器中以便快速查找1577.5 将未排序的元素存储在容器中以便快速查找1657.6 使用C 20的指定初始化特性168第8章 标准模板库的算法1708.1 在容器中使用迭代器定义序列1708.2 对容器中的每个元素都调用函数1758.3 查找容器中的值和小值1778.4 计算序列中某个值的出现次数1818.5 查找序列中的值1848.6 排序序列中的元素1858.7 查找集合中的值187第9章 模板1899.1 创建模板函数1899.2 模板偏特化1929.3 创建类模板1989.4 创建单例2009.5 在编译时计算值2029.6 concept特性205第10章 内存20710.1 静态内存的使用20710.2 栈内存的使用20910.3 堆内存的使用21310.4 自动共享内存的使用21510.5 创建单实例动态对象21810.6 创建智能指针22210.7 通过重载new和delete调试内存问题22910.8 确定代码更改对性能的影响23510.9 了解内存选择对性能的影响23710.10 减少内存碎片问题240第11章 并发25211.1 使用线程执行并发任务25211.2 创建线程作用域变量25711.3 使用互斥的方式访问共享对象26811.4 创建等待事件的线程27711.5 从线程中检索结果28211.6 在线程之间同步队列消息286第12章 网络29812.1 在macOS上设置Berkeley Sockets应用程序29812.2 在Ubuntu的Eclipse中设置Berkeley Sockets应用程序30112.3 在Windows的Visual Studio中设置Winsock 2应用程序30512.4 在两个程序之间创建一个Socket连接30912.5 在两个程序之间创建网络协议330第13章 脚本34613.1 在Visual Studio C 中运行Lua命令34613.2 在Eclipse中创建一个Lua项目35013.3 在Xcode中创建一个Lua项目35213.4 使用Lua编程语言35313.5 从C 中调用Lua函数36213.6 从Lua中调用C函数37113.7 创建异步Lua函数377第14章 3D图形编程38314.1 GLFW简介38314.2 渲染三角形38614.3 创建纹理四边形39614.4 从文件中加载几何体41614.5 使用C 20的module特性433