当前位置:C++技术网 > 资讯 > 编程新书推荐:C++标准模板库编程实践

编程新书推荐:C++标准模板库编程实践

更新时间:2017-06-16 09:35:32浏览次数:1+次

        C++是一门涵盖面向底层也是面向高层的编程语言。多数的时候,我们都是拿C++来开发大型项目。然而C++语言本身并不携带大量的库函数,为了应对大量的开发,提高开发效率,我们一般都要学习标准模板库STL的。STL的各种容器算法可以涵盖我们绝大多数需要使用的数据模型,而且因为封装良好,运行效率很高,而且代码使用起来也都很统一。从代码角度来讲,我们可以极大精简代码,从运行性能来讲,我们可以大大提高运行效率。当然。如果你不会使用STL这个工具,那么都基于最原始的方式来发,那开发效率和运行效率应该就不好说了。对于大多数普通程序员来讲,通常都不如STL写的好,毕竟STL都是高手写好的库哦。

        你可以看到各种开源库和各种C++大型项目,到处充斥着STL的东西,就是C#、Java也大量使用容器什么的。然而作为高效率的C++开发,如果不掌握STL,那么C++开发自然也就优势大减,很难做到基于语言的快速开发。所以说,使用C++必然要掌握STL。当然如果你只是想打打酱油,不想得到技术的长足进步,可以忽略STL,而高手大神都是必会的技能。

        说起STL,表面上看各种容器算法使用起来感觉确实很简单,而有些课程讲解STL也是仅限于使用。这让我们感觉STL就是一个简单的工具,需要的时候再临时查查就行。然而一开始我也是这样想的,结果却并不是这样的。STL看起来简单,但是并不简单。如果你真想将STL用好,必须要完整学习一遍,而不要停留在表层。

        那么学习STL到什么程度才叫好呢?要形成用STL做开发的思维方式,了解各种容器的用法,以及各种工具的内部原理。不需要你太精通,做到上述要求,你就已经很不错的。至于最底层的各种实现,那就复杂了。实际上是基于数据结构、算法和模板的支撑,研究起来还是需要不少基础的。

        而要想学好STL,你的需要具备C++基础,需要掌握C++模板。否则STL你有看不懂的。就需要这个基础,然后就可以学了。

        这里就推荐一本学习STL的新书,涵盖了最新的C++14标准的语法,这本编程新书推荐:C++标准模板库编程实践书就是《C++标准模板库编程实践》。来看看书籍封面:

    编程新书推荐:C++标准模板库编程实践

        下面是书籍的目录:

    目录:
第1章  STL介绍 1
1.1  基本思想 2
1.2  模板 2
1.3  容器 6
1.4  迭代器 7
1.4.1  获取迭代器 8
1.4.2  迭代器的类别 8
1.4.3  流迭代器 11
1.4.4  迭代器适配器 12
1.5  迭代器上的运算 14
1.6  智能指针 14
1.6.1  使用unique_ptr<T>指针 16
1.6.2  使用shared_ptr<T>指针 18
1.6.3  weak_ptr<T>指针 21
1.7  算法 22
1.8  将函数作为实参传入 23
1.8.1  函数对象 23
1.8.2  lambda表达式 24
1.9  小结 28
练习 29
第2章  使用序列容器 31
2.1  序列容器 31
2.2  使用array<T,N>容器 35
2.2.1  访问元素 36
2.2.2  使用数组容器的迭代器 39
2.2.3  比较数组容器 41
2.3  使用vector<T>容器 42
2.3.1 创建vector<T>容器 42
2.3.2  vector的容量和大小 44
2.3.3  访问元素 45
2.3.4  使用vector容器的
迭代器 46
2.3.5  向vector容器中添加
元素 49
2.3.6  删除元素 53
2.3.7  vector<bool>容器 57
2.4  使用deque<T>容器 58
2.4.1  生成deque容器 58
2.4.2  访问元素 59
2.4.3  添加和移除元素 59
2.4.4  替换deque容器中的内容 60
2.5  使用list<T>容器 62
2.5.1  生成list容器 63
2.5.2  添加元素 63
2.5.3  移除元素 65
2.5.4  排序和合并元素 66
2.5.5  访问元素 69
2.6  使用forward_list<T>容器 71
2.7  自定义迭代器 76
2.7.1  STL迭代器的要求 76
2.7.2  走进STL 77
2.8  本章小结 86
练习 87
第3章  容器适配器 89
3.1  什么是容器适配器 89
3.2  创建和使用stack<T>容器
适配器 90
3.3  创建和使用queue<T>容器
适配器 95
3.3.1  queue操作 96
3.3.2  queue容器的实际使用 97
3.4  使用priority_queue<T>容器
适配器 102
3.4.1  创建priority_queue 103
3.4.2  priority_queue操作 104
3.5  堆 107
3.5.1  创建堆 108
3.5.2  堆操作 110
3.6  在容器中保存指针 116
3.6.1  在序列容器中保存指针 116
3.6.2  在优先级队列中存储
指针 123
3.6.3  指针的堆 125
3.6.4  基类指针的容器 125
3.6.5  对指针序列应用算法 129
3.7  本章小结 130
练习 130
第4章  map容器 131
4.1  map容器介绍 131
4.2  map容器的用法 132
4.2.1  创建map容器 134
4.2.2  map元素的插入 135
4.2.3  在map中构造元素 142
4.2.4  访问map中的元素 142
4.2.5  删除元素 152
4.3  pair<>和tuple<>的用法 152
4.3.1  pair的操作 153
4.3.2  tuple的操作 156
4.3.3  tuples和 pairs实战 158
4.4  multimap容器的用法 163
4.5  改变比较函数 168
4.5.1  greater<T>对象的用法 168
4.5.2  用自定义的函数对象来比较
元素 169
4.6  哈希 170
4.7  unordered_map容器的用法 173
4.7.1  生成和管理unordered_map
容器 175
4.7.2  调整格子个数 177
4.7.3  插入元素 178
4.7.4  访问元素 179
4.7.5  移除元素 180
4.7.6  访问格子 180
4.8  unordered_multimap容器的
用法 184
4.9  本章小结 192
练习 193
第5章  set的使用 195
5.1  理解set容器 195
5.2  使用set<T>容器 196
5.2.1  添加和移除元素 197
5.2.2  访问元素 199
5.2.3  使用set 199
5.2.4  set迭代器 209
5.2.5  在set容器中保存指针 209
5.3  使用multiset<T>容器 215
5.3.1  保存派生类对象的指针 217
5.3.2  定义容器 219
5.3.3  定义示例的main()函数 220
5.4  unordered_set<T>容器 223
5.4.1  添加元素 224
5.4.2  检索元素 225
5.4.3  删除元素 226
5.4.4  创建格子列表 227
5.5  使用unordered_multiset<T>
容器 228
5.6  集合运算 233
5.6.1  set_union()算法 234
5.6.2  set_intersection()算法 235
5.6.3  set_difference()算法 236
5.6.4  set_symmetric_difference()
算法 236
5.6.5  includes()算法 236
5.6.6  集合运算的运用 238
5.7  本章小结 240
练习 240
第6章  排序、合并、搜索和分区 243
6.1  序列排序 243
6.1.1  排序以及相等元素的
顺序 246
6.1.2  部分排序 247
6.1.3  测试排序序列 250
6.2  合并序列 251
6.3  搜索序列 260
6.3.1  在序列中查找元素 260
6.3.2  在序列中查找任意范围的
元素 262
6.3.3  在序列中查找多个元素 264
6.4  分区序列 268
6.4.1  partition_copy()算法 270
6.4.2  partition_point()算法 271
6.5  二分查找算法 272
6.5.1  binary_search()算法 273
6.5.2  lower_bound()算法 274
6.5.3  equal_range()算法 274
6.6  本章小结 277
练习 278
第7章  更多的算法 279
7.1  检查元素的属性 279
7.2  序列的比较 281
7.2.1  查找序列的不同之处 283
7.2.2  按字典序比较序列 286
7.2.3  序列的排列 287
7.3  复制序列 292
7.3.1  复制一定数目的元素 292
7.3.2  条件复制 292
7.4  复制和反向元素顺序 296
7.5  复制一个删除相邻重复元素的
序列 297
7.6  从序列中移除相邻的重复
元素 298
7.7  旋转序列 299
7.8  移动序列 301
7.9  从序列中移除元素 303
7.10  设置和修改序列中的
元素 305
7.10.1  用函数生成元素的值 306
7.10.2  转换序列 307
7.10.3  替换序列中的元素 310
7.11  算法的应用 311
7.12  本章小结 315
练习 320
第8章  生成随机数 321
8.1  什么是随机数 321
8.2  概率、分布以及熵 322
8.2.1  什么是概率 322
8.2.2  什么是分布 322
8.2.3  什么是熵 324
8.3  用STL生成随机数 324
8.3.1  生成随机数的种子 325
8.3.2  获取随机种子 325
8.3.3  种子序列 326
8.4  分布类 329
8.4.1  默认随机数生成器 329
8.4.2  创建分布对象 330
8.4.3  均匀分布 331
8.4.4  正态分布 342
8.4.5  对数分布 347
8.4.6  其他和正态分布相关的
分布 350
8.4.7  抽样分布 351
8.4.8  其他分布 365
8.5  随机数生成引擎和生成器 370
8.5.1  线性同余引擎 371
8.5.2  马特赛特旋转演算法
引擎 372
8.5.3  带进位减法引擎 372
8.6  重组元素序列 373
8.7  本章小结 374
练习 375
第9章  流操作 377
9.1  流迭代器 377
9.1.1  输入流迭代器 377
9.1.2  输出流迭代器 381
9.2  重载插入和提取运算符 383
9.3  对文件使用流迭代器 384
9.3.1  文件流 385
9.3.2  文件流类的模板 385
9.3.3  用流迭代器进行文件
输入 386
9.3.4  用流迭代器来反复读
文件 388
9.3.5  用流迭代器输出文件 390
9.4  流迭代器和算法 391
9.5  流缓冲区迭代器 395
9.5.1  输入流缓冲区迭代器 395
9.5.2  输出流缓冲区迭代器 396
9.5.3  对文件流使用输出流缓冲区
迭代器 397
9.6  string流、流,以及流缓冲区
迭代器 399
9.7  本章小结 402
练习 402
第10章  使用数值、时间和复数 403
10.1  数值计算 403
10.2  数值算法 403
10.2.1  保存序列中的增量值 404
10.2.2  求序列的和 405
10.2.3  内积 406
10.2.4  相邻差 411
10.2.5  部分和 411
10.2.6  极大值和极小值 413
10.3  保存和处理数值 414
10.3.1  valarray对象的基本
操作 415
10.3.2  一元运算符 418
10.3.3  用于valarray对象的复合
赋值运算符 419
10.3.4  valarray对象的二元
运算 420
10.3.5  访问valarray对象中的
元素 421
10.3.6  多个切片 436
10.3.7  选择多行或多列 438
10.3.8  使用gslice对象 439
10.3.9  选择元素的任意子集 440
10.3.10  有条件地选择元素 441
10.3.11  有理数算法 442
10.4  时序模板 445
10.4.1  定义duration 446
10.4.2  时钟和时间点 451
10.5  复数 458
10.5.1  生成表示复数的对象 459
10.5.2  复数的运算 460
10.5.3  复数上的比较和其他
运算 460
10.5.4  一个使用复数的简单
示例 461
10.6  本章小结 463
练习 464

    
   下面给出我购买这本书的链接方便你购买:点此前去购买C++标准模板库编程实践