《C++20编程技巧:98个问题解决方案示例(原书第2版)》是由机械工业出版社出版的一本关于C++编程方面的书籍,作者是J.伯顿·布朗宁、布鲁斯·萨瑟兰,主要介绍了关于C++、编程技巧方面的知识内容,目前在C++编程类书籍综合评分为:8.1分。
书籍介绍
涵盖C++核心语言标准以及标准模板库(STL)中一些可用的代码模板,是一本方便的专题式代码参考指南。
内容简介
本书带你探索C20的主要新特性,包括模块、概念、飞船运算符和智能指针。本书是一本方便的专题式代码参考指南,涵盖了C核心语言标准以及标准模板库(STL)中可用的一些代码模板。通过本书,你将学习数字、字符串、日期、时间、类、异常、流、流程和指针等。此外,你还将看到各种代码示例、C算法模板、并行处理、多线程和数值处理、3D图形编程代码等。同时,本书还提供了大量的STL模板,如函数对象模板、适配器模板、分配器模板和扩展模板。
目录
- 译者序
- 前言
- 关于技术审校者
- 第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安装MicrosoftVisualStudio14
- 第2章现代C16
- 2.1初始化变量16
- 2.2使用初始化列表初始化对象19
- 2.3使用类型推断21
- 2.4在函数中使用auto关键字24
- 2.5编译时常量的使用26
- 2.6lambda的使用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.6C20的宇宙飞船运算符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使用C20的“指定初始化”特性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.6concept特性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上设置BerkeleySockets应用程序298
- 12.2在Ubuntu的Eclipse中设置BerkeleySockets应用程序301
- 12.3在Windows的VisualStudio中设置Winsock2应用程序305
- 12.4在两个程序之间创建一个Socket连接309
- 12.5在两个程序之间创建网络协议330
- 第13章脚本346
- 13.1在VisualStudioC中运行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.1GLFW简介383
- 14.2渲染三角形386
- 14.3创建纹理四边形396
- 14.4从文件中加载几何体416
- 14.5使用C20的module特性433