《C/C++函数与算法速查宝典》陈 锐【文字版_PDF电子书_】
![]()
| 书名:C/C++函数与算法速查宝典 作者:陈锐 出版社:人民邮电出版社 译者:无 出版日期:2022-9 页数:376 ISBN:9787115588357 | 0.0 豆瓣评分 | 孔网购买 | 点击喜欢 | 全网资源sm.nayona.cn |
内容简介:
本书全面、系统地讲解了C和C++中的常用函数及算法,其内容分为3篇,共29章,包括近300个常用函数和九大类算法,还以实例形式讲解了Visual Studio调试技术。其中,在C语言函数篇,对每一个函数的讲解都包含了函数原型、功能、参数、返回值、范例、解析等内容,部分函数会通过综合实例来辅助理解。在算法篇,每个算法采用相应实例进行讲解,包含问题、分析、实现、说明等内容。在C++输入/输出流与容器篇,针对每个类库选取了最常用的函数,按构造类函数、存取类函数、操作类函数等类别从函数原型、函数功能、函数参数、函数返回值、函数范例、函数解析等方面进行了介绍。本书适合学习C/C++函数和算法的初、中级开发人员,爱好者和大、中专院校学生使用。对于经常使用C/C++进行开发的程序员,本书更是一本不可多得的案头常备工具书。
作者简介:
1.陈锐,硕士生导师,中国人工智能学会情感智能专委会委员、中国图象图形学学会人机交互专委会委员。目前从事数据结构与算法方面的教学工作,以及人工智能、推荐系统方面的科研工作。出版多部作品,其中两部获批省部级规划教材立项建设。
2.孙玉胜,硕士生导师,电子书信息工程国家专业建设点负责人,“Python 程序设计”省级课程负责人。目前从事电子信息、软件工程专业教学和科研工作。
3.梁辉,教授,博士生导师,河南省计算机动画实现技术国际联合实验室主任,数字媒体技术专业带头人,“计算机动画与虚拟现实”科技创新团队带头人。目前从事计算机动画、数字媒体技术、虚拟现实的科研工作。
目 录:
第 1篇 C语言函数篇
第 1章 ctype.h库函数 2
ctype.h库函数主要包括一些字符处理函数。例如,其中的isalnum函数用来判断是否是英文字母或数字字符,tolower函数是将大写字母转换为小写字母。
1.1 字符测试函数 2
1.1.1 isalnum函数—判断是否是英文字母或数字字符 2
1.1.2 isalpha函数—判断是否为英文字母 3
1.1.3 isascii函数—判断ASCII码是否位于0~127 4
1.1.4 iscntrl函数—判断是否是控制字符 5
1.1.5 isdigit函数—判断是否是数字字符 6
1.1.6 isgraph函数—判断是否是可打印字符(不包括空格) 7
1.1.7 islower函数—判断是否是小写英文字母 8
1.1.8 isprint函数—判断是否是可打印字符(包括空格) 10
1.1.9 ispunct函数—判断是否是标点符号 11
1.1.10 isspace函数—判断是否是 空白符 12
1.1.11 isxdigit函数—判断是否是 十六进制字符 13
1.2 字符转换函数 15
1.2.1 tolower函数—将大写英文字母转换为小写英文字母 15
1.2.2 toupper函数—将小写英文字母转换为大写英文字母 16
1.2.3 toascii函数—将字符转换为ASCII码 17
第 2章 stdio.h库函数 19
stdio.h库函数主要包括常用的输入/输出函数。例如,其中的getch函数用来接受从键盘输入的字符,printf函数用来格式化输出数据,fprintf函数用来格式化输出数据到指定的文件中。
2.1 字符输入/输出函数 19
2.1.1 getch函数和getche函数—接受从键盘输入的字符 19
2.1.2 getchar函数—接受一个字符并显示在屏幕上 20
2.1.3 gets函数—读取一个字符串 21
2.1.4 putchar函数—在屏幕上输出一个字符 23
2.1.5 puts函数—在屏幕上输出一个字符串 24
2.2 格式化输入/输出函数 25
2.2.1 printf函数—格式化输出数据 25
2.2.2 scanf函数—格式化输入数据 28
2.2.3 sprintf函数—输出格式化数据到指定的数组中 30
2.2.4 sscanf函数—从字符串读取格式化数据 31
2.2.5 vprintf函数—在屏幕上输出格式化变长参数列表 33
2.2.6 vscanf函数—读取从键盘输入的格式化数据 34
2.3 文件输入/输出函数 35
2.3.1 fgetc函数和getc函数—从文件中读取一个字符 35
2.3.2 fgets函数—从文件中读取多个字符 36
2.3.3 fprintf函数—格式化输出数据到指定的文件中 38
2.3.4 fscanf函数—从文件中读取格式化数据 39
2.3.5 fputc函数和putc函数—输出一个字符到指定的文件中 40
2.3.6 fputs函数—输出一个字符串到指定的文件中 42
2.3.7 fread函数—从文件中读取一个数据块 43
2.3.8 fwrite函数—向文件中写入数据块 44
2.3.9 vfprintf函数—输出格式化数据到指定的文件 46
2.3.10 vfscanf函数—从文件中读取 格式化数据 47
2.4 文件定位函数 48
2.4.1 fseek函数—移动文件位置指针到指定位置 49
2.4.2 ftell函数—得到文件位置指针的当前值 50
2.4.3 rewind函数—将文件位置指针移动到文件的开头 51
2.5 文件存取操作函数 53
2.5.1 fclose函数—关闭文件 53
2.5.2 fflush函数—将缓冲区的内容写入文件 54
2.5.3 fopen函数—打开文件 55
2.5.4 remove函数—删除文件 57
2.5.5 rename函数—重命名文件 58
2.6 文件错误控制函数 60
2.6.1 clearerr函数—清除文件中的错误标志 60
2.6.2 feof函数—是否到了文件末尾 61
2.6.3 ferror函数—检查文件操作是否出现了错误 62
2.7 文件输入/输出函数综合应用范例 64
第3章 string.h库函数 70
string.h库函数主要包括常用的字符串操作函数。例如,其中的strcmp函数用来比较两个字符串的大小,strcpy函数用来将一个字符串拷贝到另一个字符串中,strcat函数用来将两个字符串连接在一起。
3.1 字符串比较函数 70
3.1.1 memcmp函数和memicmp函数—比较两个字符串 70
3.1.2 strcmp函数和stricmp函数—比较两个字符串 72
3.1.3 strncmp函数和strnicmp函数—比较两个字符串 74
3.2 字符串拷贝函数 75
3.2.1 memcpy函数—拷贝n个字节到另一个数组 75
3.2.2 memmove函数—拷贝n个字节到数组中(可重叠) 76
3.2.3 strcpy函数—字符串拷贝 77
3.2.4 strncpy函数—拷贝n个字符到目的字符数组 78
3.3 字符串连接函数 80
3.3.1 strcat函数—连接两个字符串 80
3.3.2 strncat函数—将字符串1的前n个字符连接到字符串2 81
3.4 字符串查找函数 82
3.4.1 memchr函数—在内存块中查找字符 83
3.4.2 strchr函数—在字符串中查找字符 84
3.4.3 strstr函数—查找字符串 85
3.4.4 strtok函数—分解字符串 87
3.5 字符串转换函数 88
3.5.1 strlwr函数—将大写字母转换为小写字母 88
3.5.2 strrev函数—将字符串逆置 90
3.5.3 strupr函数—将小写字母转换为大写字母 91
3.6 其他函数 92
3.6.1 memset函数—用指定的字符填充字符串 92
3.6.2 strlen函数—求字符串的长度 93
3.7 字符串函数综合应用范例 94
第4章 stdlib.h库函数 99
stdlib.h库函数主要包括字符串转换函数、动态内存管理函数、过程控制函数等。例如,atof 函数是将字符串转换为双精度浮点数,malloc函数是分配内存空间,abort函数用来终止当前的进程。
4.1 字符串转换函数 99
4.1.1 atof函数—将字符串转换为双精度浮点数 99
4.1.2 atoi函数—将字符串转换为整数 101
4.1.3 atol函数—将字符串转换为长整型数 102
4.1.4 strtod函数—将字符串转换为双精度浮点数 103
4.1.5 strtol函数—将字符串转换为长整型数 104
4.2 动态内存管理函数 106
4.2.1 malloc函数—分配内存空间 106
4.2.2 calloc函数—分配内存空间并初始化 107
4.2.3 free函数—释放内存空间 109
4.2.4 realloc函数—重新分配内存空间 111
4.2.5 动态内存管理函数综合应用范例 112
4.3 随机数生成函数 116
4.3.1 rand函数—产生伪随机数 116
4.3.2 srand函数—初始化随机数发生器 117
4.4 查找函数和排序函数 118
4.4.1 bsearch函数—折半查找 118
4.4.2 qsort函数—快速排序 119
4.4.3 排序函数和查找函数综合应用范例 121
4.5 过程控制函数 123
4.5.1 abort函数—终止当前进程 123
4.5.2 exit函数—退出当前程序 126
4.5.3 system函数—执行系统命令 127
第5章 math.h库函数 129
math.h 库函数主要包括三角函数、指数和对数函数、幂指数和开方函数等。例如,cos 函数用来求角度的余弦值,log 函数用来求自然对数,pow 10函数用来求10exp的值。
5.1 三角函数 129
5.1.1 cos函数—求角度的余弦值 129
5.1.2 sin函数—求角度的正弦值 130
5.1.3 tan函数—求角度的正切值 131
5.1.4 acos函数—求角度的反余弦值 132
5.1.5 asin函数—求角度的反正弦值 133
5.1.6 atan函数—求角度的反正切值 134
5.2 指数和对数函数 136
5.2.1 exp函数—求以自然数e为底的指数值 136
5.2.2 log函数—求自然对数 137
5.2.3 log10函数—求对数 138
5.3 幂指数和开方函数 139
5.3.1 pow函数—求baseexp的值 139
5.3.2 pow10函数—求10exp的值 140
5.3.3 sqrt函数—求平方根 141
5.4 绝对值函数 142
5.4.1 abs函数—求整数的绝对值 143
5.4.2 fabs函数—求浮点数的绝对值 144
5.4.3 labs函数—求长整型数据的绝对值 145
5.5 其他函数 146
5.5.1 floor函数—求不大于x的最大整数 146
5.5.2 fmod函数—返回x/y的余数 147
5.5.3 frexp函数—将浮点数分解为尾数和指数 148
5.5.4 hypot函数—根据直角边求斜边 149
5.5.5 modf函数—将浮点数分解为整数部分和小数部分 151
5.5.6 poly函数—计算xn的值 152
5.6 数学函数综合应用范例 153
5.6.1 计算方程的根 153
5.6.2 求整数序列的第i个元素 155
5.6.3 求2s+2t的第 10项 156
第6章 stdarg.h库函数 159
stdarg.h 库函数主要包括3个用来处理变长参数的宏。例如,va_arg宏用来获取下一个参数,va_start宏用来初始化变长参数列表。
6.1 va_arg宏 159
6.2 va_start宏 161
6.3 va_end宏 162
6.4 可变参数函数综合应用范例 164
第7章 time.h库函数 166
time.h 库函数主要包括一些时间处理函数。例如,其中的 time 函数用来得到当前的时间,ctime 函数用来将时间转换为字符串形式。
7.1 时间操作函数 166
7.1.1 clock函数—返回CPU时钟计时单元 166
7.1.2 difftime函数—计算两个时钟之间的间隔 167
7.1.3 time函数—得到当前的时间 169
7.2 时间格式转换函数 170
7.2.1 asctime函数—将时间格式转换为字符串形式 170
7.2.2 ctime函数—将时间转换为字符串形式 171
7.2.3 gmtime函数—返回(格林尼治)时间结构的指针 172
7.2.4 localtime函数—返回指向时间结构的指针 174
7.2.5 mktime函数—将struct tm格式的时间转换为秒 175
7.2.6 strftime函数—将时间格式化为字符串 176
第 2篇 算法篇
第8章 排序算法 180
排序算法是程序设计中较为常用的算法。排序算法主要包括插入排序、交换排序、选择排序、归并排序和基数排序。
8.1 插入排序 180
8.1.1 直接插入排序 180
8.1.2 折半插入排序 182
8.1.3 希尔排序 185
8.2 交换排序 187
8.2.1 冒泡排序 188
8.2.2 快速排序 191
8.3 选择排序 195
8.3.1 简单选择排序 195
8.3.2 堆排序 199
8.4 归并排序 205
8.5 基数排序 207
第9章 查找算法 214
查找算法是程序设计中常用的算法。查找算法主要包括基于线性表的查找、基于树的查找和哈希表的查找。
9.1 基于线性表的查找 214
9.1.1 顺序查找 214
9.1.2 折半查找 216
9.1.3 分块查找 219
9.2 基于树的查找 222
9.2.1 基于二叉排序树的查找操作 222
9.2.2 基于二叉排序树的插入操作 224
9.3 哈希表的查找 227
9.3.1 构造哈希表 227
9.3.2 处理冲突 229
第 10章 递推算法 234
递推算法是通过不断迭代,用旧的变量值递推得到新值。递推算法常用来解决重复计算的问题,如斐波那契数列、存取问题等。
10.1 顺推法 234
10.1.1 斐波那契数列 234
10.1.2 将十进制数转换为二进制数 236
10.1.3 求最大公约数和最小公倍数 238
10.1.4 质因数的分解 240
10.1.5 角谷猜想 241
10.1.6 母牛生小牛问题 242
10.1.7 杨辉三角 243
10.2 逆推法 245
10.2.1 猴子摘桃问题 245
10.2.2 存取问题 246
第 11章 枚举算法 248
枚举算法也称穷举算法,它是编程中常用的一种算法。在解决某些问题时,可能无法按照一定规律从众多的候选解中找出正确的答案。此时,可以从众多的候选解中逐一取出候选答案,并验证候选答案是否为正确的解。
11.1 判断n是否能被3、5、7整除 248
11.2 百钱买百鸡 251
11.3 五猴分桃 252
11.4 求最大连续子序列和 254
11.5 填数游戏 256
11.6 谁在说谎 257
第 12章 递归算法 260
递归是自己调用自己,它将一个复杂的问题进行整体考虑,只要知道最基本问题的答案,就可以得到整个问题的答案。常见的递归问题有阶乘、斐波那契数列和最大公约数等。
12.1 简单递归 260
12.1.1 求n的阶乘 260
12.1.2 斐波那契数列 263
12.1.3 求n个数中的最大者 265
12.1.4 进制转换 266
12.1.5 求最大公约数 267
12.2 复杂递归 268
12.2.1 逆置字符串 268
12.2.2 和式分解 270
12.2.3 和式分解(分解出的和数非递 增排列) 272
12.2.4 求无序序列中的第k大 元素 273
12.2.5 从1~n个自然数中任选r个 数的所有组合数 275
12.2.6 大牛生小牛问题 277
第 13章 贪心算法 279
贪心算法是一种不追求最优解,只希望找到较为满意解的方法。贪心算法省去了为找最优解要穷尽所有可能而必须耗费的大量时间,因此,它一般可以快速得到比较满意的解。贪心算法常以当前情况为基础做最优选择,而不考虑各种可能的整体情况,所以贪心算法不需要回溯。
13.1 找零钱问题 279
13.2 哈夫曼编码 281
13.3 加油站问题 288
第 14章 回溯算法 290
回溯算法也称为试探法,是一种选优搜索法。该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按照某种顺序逐一枚举和检验。当发现当前的候选解不可能是解时,就选择下一个候选解;倘若当前候选解只是不满足问题的规模要求,但满足所有其他要求时,则继续扩大当前候选解的规模,并继续向前试探。如果当前的候选解满足包括问题规模在内的所有要求,则该候选解就是问题的一个解。在寻找解的过程中,放弃当前候选解,退回上一步重新选择候选解的过程就称为回溯。
14.1 和式分解(非递归实现) 290
14.2 填字游戏 293
14.3 装箱问题 297
第 15章 分治算法 300
分治算法是将一个规模为N的问题分解为K个规模较小的子问题进行求解,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。最大子序列和、求x的n次幂、众数问题等就是利用分治算法来实现的。
15.1 最大子序列和问题 300
15.2 求x的n次幂 302
15.3 众数问题 304
15.4 求n个数中的最大者和最小者 306
15.5 整数划分问题 308
15.6 大整数的乘法问题 310
第 16章 矩阵算法 315
矩阵算法主要通过分析数组中元素值的变化规律,巧妙利用数组下标与元素值之间的关系设计算法。矩阵算法往往需要交换或者存取矩阵中的某个元素,这就需要灵活掌握二维数组两个下标的变换。
16.1 打印拉丁方阵 315
16.2 打印蛇形方阵 317
16.3 打印螺旋矩阵(非递归和递归实现) 318
16.4 打印逆螺旋矩阵 321
16.5 将矩阵旋转90度 322
16.6 将上三方阵以行序为主序转换为以列序为主序 324
第 17章 实用算法 327
在学习和工作中,经常会遇到一些与实际生活紧密相关的问题,这些问题也可通过算法来得到答案,从而大大提高我们的学习和工作效率。比较常见的实用算法有计算一年中的第几天、大小写金额转换、微信抢红包问题、求算术表达式的值、一元多项式的乘法、大整数乘法。
17.1 一年中的第几天 327
17.2 大小写金额转换 329
17.3 将15位身份证号转换为18位 333
17.4 微信抢红包问题 335
17.5 求算术表达式的值 336
17.6 一元多项式的乘法 345
17.7 大整数乘法 351
17.8 迷宫求解 353
第 18章 程序调试技术 359
程序调试也是程序员必备的一项技能。对于初学者来说,通过不断调试程序,既验证了程序的正确性,又深入地理解了程序的算法思想,提高了调试程序的能力,为今后深入学习计算机的其他内容打下坚实的基础。
18.1 为什么要调试程序 359
18.2 程序调试 360
18.2.1 如何使用Visual Studio 2019开发 环境调试程序 360
18.2.2 冒泡排序程序调试 366
18.2.3 合并链表程序调试 371
以下章节见电子资源
第3篇 C++输入/输出流与容器篇
第 19章 ios_base类 379
ios_base类主要是C++输入/输出流的基类,它主要包含流的格式化函数。例如,flags函数用来获取或设置流格式,precision函数用来得到/设置浮点数的精度。
19.1 flags函数—得到/设置流的格式标志 380
19.2 setf函数和unsetf函数—设置和清除流的格式标志 381
19.3 precision函数—得到/设置浮点数的精度 383
19.4 width函数—得到/设置域宽 384
第 20章 iostream类 386
iostream 类派生自istream类和 ostream类。iostream 类中的函数非常常用。例如,isotream类的对象cout用来控制输出、cin用来控制输入。
20.1 get函数—无格式的输入操作 388
20.2 getline函数—接受输入的字符串 390
20.3 ignore函数—忽略指定的字符 391
20.4 peek函数—从流中接受输入的字符 392
20.5 read函数—读取一个字符块 393
20.6 putback函数—将读取的字符返回给输入流 394
20.7 put函数—输出字符 396
20.8 fill函数—得到/设置填充字符 397
第 21章 文件流类 399
ifstream类、ofstream类和fstream类都是对文件进行读/写操作的类,我们将这些类统称为文件流类。在C++中,要对文件进行读/写操作,就需要先将文件流类与文件关联起来(一般采用open的方式或构造函数的方式),然后再利用文件流对文件进行操作。
21.1 ifstream构造函数—创建输入流对象 400
21.2 rdbuf函数—返回指向filebuf的指针 401
21.3 is_open函数—检测文件是否被打开 403
21.4 open函数和close函数—打开和关闭文件 404
21.5 read函数和write函数—从流中读取数据和向流中写入数据 406
21.6 seekg函数和tellg函数—设置和得到流的位置指针位置 407
21.7 seekp函数和tellp函数—设置和得到文件的位置指针位置 409
21.8 flush函数—刷新输出流缓冲区 411
第 22章 string类 412
string类主要用于消除对char*的使用,以保持与现有代码的兼容性,它还会自动进行内存管理,便于对字符进行操作,其性能比使用char*更佳。
22.1 字符串运算符函数 412
22.1.1 字符串构造函数—构造字符 串对象 412
22.1.2 =运算符函数—将字符串内容 拷贝到新字符串对象 414
22.1.3 +和+=运算符函数—连接 字符串 415
22.1.4 ==、!=、<、>、<=、>=运算符 函数—比较字符串 417
22.1.5 []运算符函数—返回string中 的某个字符 418
22.1.6 at函数—返回string中的某个 字符(范围检测) 419
22.2 字符串迭代器函数 420
22.2.1 begin函数和end函数—返回 第 一个字符和最后一个字符的 迭代器 420
22.2.2 rbegin函数和rend函数—返回 相对于begin函数和end函数的 反向迭代器 422
22.3 字符串长度函数 423
22.3.1 length函数和size函数—返回 字符个数 423
22.3.2 max_size函数—返回string能 容纳的最大字符个数 424
22.3.3 capacity函数—返回分配的 存储空间大小 425
22.3.4 resize函数—设置string的 长度 427
22.3.5 reserve函数—为string对象 预留空间 428
22.3.6 empty函数—判断string是否 为空 429
22.4 字符串操作函数 430
22.4.1 insert函数—判断string是否 为空 430
22.4.2 erase函数—清除string中的 字符 432
22.4.3 replace函数—置换string中的 字符 433
22.4.4 swap函数—交换两个字符串 的内容 436
22.4.5 c_str函数—返回与string 等效的字符串 437
22.4.6 copy函数—取出string对象中 的指定字符 438
22.4.7 find函数—在string对象中 查找字符串 439
22.4.8 find_first_of函数和find_last_of 函数—在string中查找字符串 (部分匹配) 441
22.4.9 substr函数—生成string的 子串 442
22.4.10 stoi函数—将字符串中的 数字转换为整数 444
第 23章 vector类 446
vector类是C++中常用的容器类,包括了一些常用的函数实现,用户无须重新编写函数即可使用。例如,size 函数用来表示向量的大小,empty函数用来表示向量是否为空,push_back函数用来向向量中追加元素。
23.1 构造类函数 446
23.1.1 vector的构造函数和析构 函数—创建vector对象和 释放vector对象 446
23.1.2 operator=函数—拷贝vector中 的内容 448
23.2 迭代器函数 449
23.2.1 begin函数和end函数—返回 第 一个元素和最后一个元素的后 一个位置 449
23.2.2 rbegin函数和rend函数—返回 与最后一个元素和第 一个元素 相关的迭代器 450
23.3 容量类函数 452
23.3.1 size函数、max_size函数和capacity 函数—返回元素的实际个数、 能容纳的最大元素个数和分配的 存储空间大小 452
23.3.2 empty函数—判断vector是否 为空 453
23.3.3 resize函数—调整vector容器 的大小 455
23.3.4 reserve函数—重新为vector 容器分配内存空间 456
23.4 存取类函数 457
23.4.1 operator[]函数—存取vector中 的元素 457
23.4.2 at函数—存取vector中的元素 (进行越界检查) 459
23.4.3 front函数和back函数—返回 vector中的第 一个元素和最后 一个元素 460
23.5 操作类函数 461
23.5.1 assign函数—为vector中的 元素赋值 462
23.5.2 push_back函数—在vector的 末尾追加新元素 463
23.5.3 pop_back函数—删除vector中 的最后一个元素 464
23.5.4 insert函数—在vector中插入 元素 466
23.5.5 erase函数—删除vector中指定 的元素 467
23.5.6 clear函数—清除vector中的 元素 469
23.5.7 swap函数—交换两个vector 中的内容 470
第 24章 deque类 472
deque类是C++的双端队列。它主要包括求队列的大小函数、元素的存取函数、向队列中插入元素和删除元素的函数等。
24.1 构造类函数 472
24.1.1 deque的构造函数和析构 函数—创建deque对象和 释放deque对象 472
24.1.2 operator=函数—拷贝deque中 的内容 474
24.2 迭代器函数 475
24.2.1 begin函数和end函数—返回 第 一个元素和最后一个元素的 后一个位置 476
24.2.2 rbegin函数和rend函数—返回 相对于begin函数和end函数的 反向迭代器 477
24.3 容量类函数 478
24.3.1 size函数和max_size函数— 返回元素的实际个数和能容纳的 最大元素个数 478
24.3.2 empty函数—判断deque是否 为空 480
24.3.3 resize函数—调整deque容器 的大小 481
24.4 存取类函数 483
24.4.1 operator[]函数—存取deque中 的元素 483
24.4.2 at函数—存取deque中的元素 (进行越界检查) 484
24.4.3 front函数和back函数—返回 deque中的第 一个元素和最后一 个元素 486
24.5 操作类函数 487
24.5.1 assign函数—为deque中的 元素赋值 487
24.5.2 push_back函数—在deque的 末尾追加新元素 489
24.5.3 push_front函数—在deque的 开始位置插入新元素 490
24.5.4 pop_back函数—移除deque中 的最后一个元素 491
24.5.5 pop_front函数—移除deque中 的第 一个元素 492
24.5.6 insert函数—在deque的指定 位置插入元素 494
24.5.7 erase函数—删除deque中指定 的元素 495
24.5.8 clear函数—清除deque中的 所有元素 497
24.5.9 swap函数—交换两个deque中 的内容 498
第 25章 list类 501
list类是C++的链表容器。它主要包括求链表的大小函数、元素的存取函数、链表的操作函数。例如,push_front函数在链表的开始插入元素,push_back函数在链表的末尾插入元素,unique函数删除链表中重复的元素。
25.1 构造类函数 501
25.1.1 list的构造函数和析构函数— 创建list对象和释放list 对象 501
25.1.2 operator=函数—拷贝list中的 内容 503
25.2 迭代器函数 505
25.2.1 begin函数和end函数—返回 第 一个元素和最后一个元素的 后一个位置 505
25.2.2 rbegin函数和rend函数—返回 相对于begin函数和end函数的 反向迭代器 506
25.3 容量类函数 508
25.3.1 size函数和max_size函数— 返回元素的实际个数和能容纳的 最大元素个数 508
25.3.2 empty函数—判断list是否 为空 510
25.3.3 resize函数—调整list的 大小 511
25.4 存取类函数 513
25.4.1 front函数—返回list中的 第 一个元素 513
25.4.2 back函数—返回list中的 最后一个元素 514
25.5 操作类函数 515
25.5.1 assign函数—为list中的元素 赋值 515
25.5.2 push_back函数—在list的末尾 追加新元素 517
25.5.3 push_front函数—在list的 开始位置插入新元素 518
25.5.4 pop_back函数—移除list 中的最后一个元素 519
25.5.5 pop_front函数—移除list中的 第 一个元素 520
25.5.6 insert函数—在list的指定位置 插入元素 522
25.5.7 erase函数—删除list中指定的 元素 523
25.5.8 clear函数—清除list中的所有 元素 525
25.5.9 swap函数—交换两个list中的 内容 526
25.5.10 splice函数—将一个list 中的元素移动到另一个 list 528
25.5.11 remove函数—从list中移除 指定的元素 529
25.5.12 remove_if函数—删除list中 不等于迭代器指向的函数 531
25.5.13 unique函数—删除list中重复 的元素 532
25.5.14 merge函数—将两个list链表 合并 534
25.5.15 sort函数—对list中的元素 排序 535
25.5.16 reverse函数—将list中的 元素逆置 537
第 26章 stack类 539
stack类是C++的栈容器。它主要包括求栈的大小函数和存取函数。例如,top函数返回栈顶元素,push函数在栈顶位置插入新元素,pop函数删除栈顶元素。
26.1 构造类函数 539
26.2 容量类函数 541
26.2.1 empty函数—判断stack 是否为空 541
26.2.2 size函数—返回stack中的 元素个数 542
26.3 存取类函数 543
26.4 操作类函数 544
26.4.1 push函数—在stack的栈顶 位置插入新元素 544
26.4.2 pop函数—移除stack的栈 顶元素 546
第 27章 queue类 548
queue类是C++的队列容器。它主要包括队列的存取函数和一些判断队列的状态函数。例如,front函数用来存取队头元素,back函数用来存取队尾元素。
27.1 构造类函数 548
27.2 容量类函数 550
27.2.1 empty函数—判断queue 是否为空 550
27.2.2 size函数—返回queue的 大小 551
27.3 存取类函数 552
27.3.1 front函数—返回queue的 队头元素 552
27.3.2 back函数—返回queue的 队尾元素 553
27.4 操作类函数 554
27.4.1 push函数—在queue队尾 插入新元素 554
27.4.2 pop函数—移除queue的 队头元素 556
第 28章 set类 558
set类是C++的集合容器。它主要包括求集合的大小函数和其他操作函数。例如,find函数返回要查找元素的迭代器,lower_bound函数返回大于等于某个值的第 一个元素的迭代器。
28.1 构造类函数 558
28.2 迭代器类函数 560
28.2.1 begin函数和end函数—返回 set的第 一个元素和最后一个元 素的迭代器 560
28.2.2 rbegin函数和rend函数—返回 set中的最后一个元素和第 一个 元素的反向迭代器 562
28.3 容量类函数 563
28.3.1 empty函数—判断set是否 为空 563
28.3.2 size函数—返回set的 大小 564
28.3.3 max_size函数—返回set能 容纳的最大元素个数 565
28.4 操作类函数 567
28.4.1 insert函数—在set中插入新 元素 567
28.4.2 swap函数—交换两个set中的 内容 568
28.4.3 erase函数—清除set中的 元素 570
28.4.4 clear函数—清空set中的 元素 572
28.4.5 find函数—查找set中的 元素 573
28.4.6 count函数—统计set中某一个 元素的个数 574
28.4.7 lower_bound函数和upper_bound 函数—返回set中元素下界和 上界的迭代器 576
28.4.8 equal_range函数—返回set中 元素x的下限和上限 577
第 29章 map类 579
map 类是 C++的映射容器。它主要包括求map容器大小的函数、元素的存取函数和查找操作函数。例如,insert函数是插入一个元素到map中,erase函数是清除map中的元素。
29.1 构造类函数 580
29.1.1 map的构造函数和析构函数— 创建map对象和释放map 对象 580
29.1.2 map的赋值构造函数—通过一 个map对象为另一个map对象 赋值 581
29.2 迭代器类函数 583
29.2.1 begin函数和end函数—返回 第 一个元素的位置和最后一个 元素的后一个位置 583
29.2.2 rbegin函数和rend函数—返回 指向map中最后一个元素的反 向迭代器和第 一个元素之 前的反向迭代器 584
29.3 容量类函数 585
29.3.1 empty函数—判断map是否 为空 585
29.3.2 size函数—返回map容器中的 元素个数 587
29.3.3 max_size函数—返回map容器 能容纳的最大元素个数 588
29.4 存取类函数 589
29.5 操作类函数 590
29.5.1 insert函数—在map中插入 新元素 590
29.5.2 erase函数—移除map中的 元素 592
29.5.3 swap函数—交换两个map中 的内容 594
29.5.4 clear函数—清除map中的 所有元素 595
29.5.5 count函数—统计map中某个 元素关键字的个数 596
29.5.6 find函数—查找map中的 元素 598
浏览器不支持脚本!
摘要:《C/C++函数与算法速查宝典》是陈锐编写的一本全面介绍C/C++编程中常用函数与算法的参考书籍。作为程序员和开发者必备的工具书,它详细讲解了C/C++编程中的常见函数、数据结构、算法以及编程技巧,内容简明扼要,便于查找与实践。这本书不仅帮助初学者快速上手,更为有经验的开发者提供了便捷的参考资料。在本书的帮助下,开发者可以更加高效地编写代码,解决复杂的编程问题。本文将从以下四个方面对《C/C++函数与算法速查宝典》进行详细阐述,分别是:函数与算法的分类、书中的经典示例、如何高效使用这本书、以及本书在开发中的实际应用。
1、函数与算法的分类
《C/C++函数与算法速查宝典》首先对C/C++中常用的函数和算法进行了系统性的分类。这种分类方式既简洁又清晰,帮助读者快速定位自己所需的函数和算法。例如,书中将函数按照功能分为输入输出、字符串操作、内存管理、数学函数、文件操作等多个模块,便于开发者根据需求直接找到对应的函数。每个类别下的函数均配有简洁的使用说明和示例,降低了程序员查找函数时的学习成本。
在算法部分,书中同样采用了分类的方法。不同类型的算法被分为排序算法、查找算法、图论算法、动态规划、回溯算法等,每种算法的原理与实现都进行了详细的解释。对于每种算法,书中不仅介绍了基本的实现方法,还提供了时间复杂度与空间复杂度的分析,帮助开发者理解算法的优劣。
分类的好处在于,它使得读者能够根据需求快速查找到需要的函数和算法,并在短时间内掌握如何使用这些函数和算法进行实际编程。这种分类方法特别适合开发者在遇到实际问题时,能够迅速找到最合适的解决方案。
2、书中的经典示例
《C/C++函数与算法速查宝典》在每个函数与算法的讲解中都配有经典示例。通过这些示例,读者不仅能够理解函数的用法,还能掌握如何在实际编程中灵活应用。书中的每个示例都是经过精心挑选的,能够展示该函数或算法的核心特性与实际应用场景。
例如,在讲解字符串操作时,书中通过一个字符串匹配算法的示例,向读者展示了如何利用标准库函数实现高效的字符串查找。而在算法部分,则通过具体的排序算法例子,如快速排序、归并排序等,帮助读者理解排序算法的执行流程及其优化方法。这些经典示例的优点在于代码简洁、功能明确,能够帮助读者快速理解并应用到实际开发中。
此外,书中的示例不仅限于简单的代码片段,而是通过构建一个完整的应用案例,演示如何在实际项目中将所学的函数和算法结合使用。通过这些经典示例,读者不仅可以加深对C/C++函数和算法的理解,还能提高解决实际问题的能力。
3、如何高效使用这本书
《C/C++函数与算法速查宝典》作为一本工具书,其设计理念便是让读者能够快速找到所需的信息。因此,如何高效使用这本书成为了开发者需要掌握的一项技能。书中的索引与目录设计非常直观,开发者可以通过目录快速定位到相关内容。此外,书中的函数与算法都有清晰的标注,便于读者根据功能或算法类型进行查找。
为了更高效地使用本书,开发者可以根据项目需求或编程任务的性质,预先了解哪些函数或算法最为常用,并记住其在书中的位置。对于一些常见的编程问题,比如内存管理、字符串操作、排序查找等,读者可以首先查阅书中的示例代码,理解其核心思想后,再根据实际情况进行修改和优化。
此外,开发者在使用这本书时还可以结合其他学习资源进行综合学习。虽然《C/C++函数与算法速查宝典》提供了大量的函数与算法示例,但开发者还可以通过阅读更多的编程书籍或参与开源项目,扩展自己的编程视野和解决问题的能力。通过这种多角度的学习方式,可以大大提高自己的编程效率。
4、本书在开发中的实际应用
在实际开发过程中,很多编程问题都能够通过《C/C++函数与算法速查宝典》中的函数和算法解决。例如,在处理数据时,开发者可以使用书中的排序和查找算法进行数据的快速处理;在开发大型系统时,可以通过使用内存管理函数来优化程序的性能;而在开发网络应用时,字符串操作函数能够帮助开发者高效地处理网络数据。
书中的算法部分对复杂问题的解决方案也提供了很大的帮助。比如,在处理图形数据时,图论算法的使用能够有效提升数据结构的操作效率;而在处理复杂的动态问题时,动态规划算法提供了精确而高效的解决思路。通过学习和使用这些算法,开发者能够更好地解决项目中的各种复杂问题。
此外,《C/C++函数与算法速查宝典》也在提高开发者编程效率方面发挥了重要作用。对于一些常见的编程问题,开发者无需从零开始编写代码,而是通过查阅本书中的函数和算法,快速解决问题,从而节省了大量的开发时间。尤其是在处理一些细节性的问题时,本书提供了很多的便捷方法,帮助开发者减少了出错的概率,提升了代码的质量。
总结:
《C/C++函数与算法速查宝典》是一本极具实用价值的工具书,它不仅帮助读者快速掌握C/C++编程语言中的各种常见函数和算法,还提供了大量的经典示例,帮助读者在实际开发中灵活应用。通过合理的分类和详细的示例,本书使得开发者能够高效地查找和应用所需的函数和算法,从而提高编程效率和代码质量。
在实际的开发工作中,《C/C++函数与算法速查宝典》为开发者提供了丰富的编程技巧和问题解决方案。无论是初学者还是经验丰富的开发者,都可以从这本书中受益。通过不断的实践和学习,开发者能够更加熟练地使用C/C++,提升自己的编程水平。
本文由nayona.cn整理
联系我们

关注公众号

微信扫一扫
支付宝扫一扫 