图书介绍
STL扩展技术手册 卷1 集合和迭代器【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

- 威尔森著,金庆等译 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111242277
- 出版时间:2008
- 标注页数:416页
- 文件大小:106MB
- 文件页数:446页
- 主题词:C语言-程序设计-技术手册
PDF下载
下载说明
STL扩展技术手册 卷1 集合和迭代器PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 基础2
第1章 标准模板库2
1.1核心概念2
1.2容器2
1.2.1序列容器2
1.2.2关联容器3
1.2.3存储空间的连续性3
1.2.4交换3
1.3迭代器3
1.3.1输入迭代器4
1.3.2输出迭代器5
1.3.3前向迭代器5
1.3.4双向迭代器5
1.3.5随机访问迭代器6
1.3.6成员选取运算符6
1.3.7预定义的迭代器适配器7
1.4算法8
1.5函数对象8
1.6分配器8
第2章 扩展STL:STL与真实世界的碰撞10
2.1术语10
2.2集合10
2.3迭代器12
2.3.1可变性12
2.3.2遍历12
2.3.3在编译期决定特性12
2.3.4元素引用类别12
2.3.5共享状态信息和独立状态信息12
2.3.6需要修改迭代器精化的分类吗13
第3章 元素引用类别15
3.1介绍15
3.2C++引用15
3.3元素引用类别的分类法16
3.3.1持久引用16
3.3.2固定引用17
3.3.3可失效引用17
3.3.4瞬时引用18
3.3.5按值临时引用19
3.3.6空引用20
3.4使用元素引用类别20
3.4.1在编译时检测引用类别20
3.4.2使用编译器帮助避免迭代器未定义行为21
3.5定义operator->()21
3.6元素引用类别:尾声22
第4章 奇异去临时引用23
第5章 DRYSPOT原则24
5.1C++编程中符合DRYSPOT的做法24
5.1.1常量24
5.1.2dimensionof()24
5.1.3创建函数25
5.2C++编程中不太符合DRYSPOT的做法25
5.2.1父类25
5.2.2函数返回类型26
5.3封闭的名字空间27
第6章 抽象泄漏法则28
第7章 契约式编程29
7.1强制的类型29
7.2强制的机制30
第8章 约束31
8.1利用C++类型系统31
8.2静态断言32
第9章 垫片33
9.1介绍33
9.2主要的垫片33
9.2.1属性垫片33
9.2.2转换垫片34
9.3复合垫片36
第10章 鸭规则和鹅规则:不完备结构一致性的发端39
10.1一致性39
10.1.1类型一致性39
10.1.2结构一致性40
10.1.3鸭规则和鹅规则41
10.2显式语义一致性42
10.2.1概念42
10.2.2给成员类型打标签43
10.2.3垫片44
10.3交集一致性44
第11章 资源获取即初始化45
11.1资源可变性45
11.2资源来源45
第12章 模板工具46
12.1特征类46
12.1.1base_type_traits47
12.1.2sign_traits48
12.1.3类型的特性:迷你特征49
12.1.4is_integral_type49
12.1.5is_signed_type50
12.1.6is_fundamental_type51
12.1.7is_same_type51
12.2类型生成器52
12.3真正的typedef52
第13章 推断式接口适配:编译时适配接口不全的类型54
13.1介绍54
13.2适配接口不全的类型54
13.3适配非变动性集合55
13.4推断式接口适配56
13.4.1类型选择57
13.4.2类型检测57
13.4.3类型修正58
13.5把IIA应用于区间60
第14章 Henney假说:当模板参数表太长61
第15章 通过equal()减少友元函数的使用63
15.1警惕非成员友元函数的滥用63
15.2集合及其迭代器65
第16章 基本组件66
16.1介绍66
16.2auto_buffer66
16.2.1它不是容器66
16.2.2类接口67
16.2.3复制68
16.2.4分配器宜最后68
16.2.5swap()68
16.2.6性能68
16.3filesystem_traits69
16.3.1成员类型69
16.3.2通用字符串处理69
16.3.3文件系统名字处理70
16.3.4文件系统状态操作71
16.3.5文件系统控制操作72
16.3.6返回类型和错误处理72
16.4file_path_buffer73
16.4.1basic74
16.4.2UNIX和PATHMAX74
16.4.3Windows和MAXPATH75
16.4.4缓冲区的使用76
16.5scoped_handle76
16.6dlcall()77
第二部分 集合81
第17章 适配globAPI81
17.1简介81
17.1.1动机81
17.1.2globAPI82
17.2解析使用原始API的版本84
17.3unixstl∷glob_sequence86
17.3.1公有接口86
17.3.2成员类型87
17.3.3成员变量87
17.3.4标志88
17.3.5构造90
17.3.6glob_sequence元素个数和元素访问91
17.3.7迭代91
17.3.8init_glob_()92
17.4解析使用glob-sequence实现的版本97
17.5小结97
第18章 插曲:构造函数冲突以及不良的设计99
第19章 适配opendir/readdirAPI101
19.1介绍101
19.1.1动机101
19.1.2opendir/readdirAPI102
19.2分析直接使用API的代码103
19.3unixstl∷readdir_sequence104
19.3.1成员类型和成员常量105
19.3.2构造106
19.3.3元素迭代和集合大小相关的方法106
19.3.4提取属性的方法107
19.3.5const_iterator,版本1107
19.3.6使用版本1111
19.3.7constiterator,版本2:复制语义111
19.3.8operator++()113
19.3.9迭代器类别和可适配的成员类型114
19.3.10operator->()114
19.3.11支持fullPath和absolutePath标志115
19.4其他的实现方法117
19.4.1把迭代结果保存为快照117
19.4.2把迭代结果保存为迭代器117
19.5总结118
第20章 适配FindFirstFile/FindNextFileAPI119
20.1介绍119
20.1.1动机119
20.1.2FindFistFile/FindNextFileAPI121
20.2对例子的分解123
20.2.1冗长版本123
20.2.2精简版本124
20.2.3重解析点和无限递归124
20.3basic_findfile_sequence的设计125
20.4winstl∷basic_findfile_sequence125
20.4.1类的接口126
20.4.2构造128
20.4.3迭代128
20.4.4如果编译器不支持异常129
20.5winstl∷basic_findfile_sequence_const_iterator131
20.5.1构造132
20.5.2find_first_file_()133
20.5.3operator++()135
20.6winstl∷basic_findfile_sequence_value_type141
20.7垫片142
20.8basic_findfile_sequence为什么不用垫片和构造函数模板143
20.9小结143
20.10结尾:用recls进行文件系统遍历144
第21章 插曲:枚举FTP服务器目录——保持效率和可用性的平衡145
21.1inetstl∷basic_findfile_sequence145
21.2inetstl∷basic_ftpdir_sequence147
第22章 遍历进程和模块149
22.1集合的特征149
22.2winstl∷pid_sequence149
22.2.1基于组合的简单实现150
22.2.2获取进程ID151
22.2.3没有异常支持时的工作方式152
22.3winstl∷process_module_sequence152
22.4枚举一个系统中的所有模块153
22.5排除系统伪进程154
22.6处理缺失API头文件的情况155
22.7总结156
第23章 斐波那契序列157
23.1简介157
23.2斐波那契序列157
23.3STL序列表示的斐波那契数列157
23.3.1无限序列的接口159
23.3.2为序列添加契约160
23.3.3换用别的值类型160
23.3.4对值类型进行约束160
23.3.5抛出std∷overflowerror161
23.4可发现性的欠缺161
23.5定义有限上界162
23.5.1最终还是要用迭代器162
23.5.2由构造函数限定的区间163
23.5.3True_Typedefs165
23.6小结167
第24章 适配MFC的CArray容器族168
24.1介绍168
24.2动机168
24.3模拟std∷vector170
24.4设计时的考虑171
24.4.1MFC的数组容器族172
24.4.2CArray_traits173
24.4.3数组适配器类的设计174
24.4.4以抽象方式操纵状态174
24.4.5Copy-and-Swap惯用法174
24.4.6编写集合的接口175
24.4.7教学方法175
24.5mfcstl∷CArray_adaptor_base的接口176
24.6mfcstl∷CArray_cadaptor177
24.6.1模板声明和继承178
24.6.2应用CRTP178
24.6.3CArray_cadaptor的构造179
24.6.4operator[]()180
24.7mfcstl∷CArray_iadaptor181
24.8CArray_adaptor_base的构造182
24.9内存分配器182
24.10元素访问方法182
24.11元素迭代183
24.11.1begin()和end()183
24.11.2rbegin()和rend()183
24.12和容器大小相关的方法184
24.13容器容量相关的方法187
24.14比较相关的方法187
24.15修改容器结构的方法190
24.15.1push_back()190
24.15.2assign()191
24.15.3popback()和clear()192
24.15.4erase()192
24.15.5insert()193
24.16赋值和swap()194
24.17总结196
24.18在CD上197
第25章 环境变量的map198
25.l介绍198
25.2动机198
25.3getenv()、putenv()、setenv()/unsetenv()和environ198
25.4platformstl∷enviroment_variable_traits199
25.5规划接口201
25.6通过名字查找201
25.6.1选择1:返回固定/瞬时引用,指向一个缓存对象,具有最新值202
25.6.2选择2:返回固定引用,指向一个缓存对象,具有快照值203
25.6.3选择3:返回固定引用,指向一个缓存对象,具有最新值204
25.6.4选择4:返回按值临时引用,具有最新值205
25.6.5通过名字查找:尾声206
25.7通过名字插入、更新和删除值206
25.8迭代206
25.8.1第1版:连续迭代器207
25.8.2第2版:双向迭代器207
25.8.3第3版:快照209
25.8.4第4版:引用计数的快照211
25.9最终的迭代实现212
25.9.1可变的快照213
25.9.2创建快照214
25.9.3constiterator嵌套类215
25.9.4insert()方法216
25.9.5erase()方法217
25.9.6operator[]()和lookup()218
25.9.7snapshot嵌套类219
25.10异质的引用类别220
25.11size()和下标索引220
25.12总结221
25.13在CD上221
第26章 在Z平面上来回穿梭222
26.1序言222
26.2介绍222
26.3第1版:前向迭代224
26.3.1zorderiterator,第1版224
26.3.2window_peer_sequence,第1版225
26.4第2版:双向迭代226
26.5处理外部更改227
26.6winstl∷child_window_sequence229
26.7双向迭代器的蓝调音乐230
26.7.1end()标记的陷阱230
26.7.2致命的双重解引用231
26.7.3当双向迭代器不是前向迭代器,而是可逆可复制迭代器232
26.8winstl∷zorderiterator:自身的反转233
26.8.1zorder_iterator特征类234
26.8.2zorder_iteratortmpl<>235
26.8.3反向的语义238
26.9同级窗口序列的定稿238
26.10总结239
26.11Z平面:尾声240
第27章 字符串分词241
27.1介绍241
27.2strtok()241
27.3SynesisSTL∷StringTokeniser243
27.4字符串分词的用例244
27.5字符串分词的其他选择245
27.5.1strtok_r()245
27.5.2IOStreams245
27.5.3stlsoft∷find_next_token()245
27.5.4boost∷tokenizer245
27.6stlsoft∷string_tokeniser246
27.6.1stlsoft∷string_tokeniser∷const_iterator248
27.6.2确定迭代器类别和元素引用类别250
27.6.3stlsoft∷stringtokeniser_type-traits250
27.6.4stlsoft∷string_tokeniser_comparator251
27.7测试代码253
27.7.1以单个字符作为分隔符253
27.7.2字符串作为分隔符254
27.7.3保留空白字段254
27.7.4复制还是引用:考虑使用“字符串视图”(StringView)254
27.7.5字符集作为分隔符256
27.8愚蠢的策略类256
27.8.1经由继承重构模板参数257
27.8.2类型生成器模板258
27.8.3关于Henney假说258
27.9性能258
27.10总结261
第28章 适配COM枚举器262
28.1介绍262
28.2动机262
28.2.1冗长版262
28.2.2短小版263
28.3COM枚举器264
28.3.1IEnumXXXX∷Next()264
28.3.2IEnumXXXX∷Skip()264
28.3.3IEnumXXXX∷Reset()264
28.3.4IEnumXXXX∷Clone()264
28.3.5枚举器的各种值类型264
28.4分解冗长版265
28.5comstl∷enumerator_sequence266
28.5.1enumerator_sequence的公共接口266
28.5.2成员类型及成员常量267
28.5.3值策略(ValuePolicies)267
28.5.4成员变量270
28.5.5构造函数270
28.5.6迭代方法271
28.5.7迭代器方法的const限定是错误的272
28.5.8破坏了值语义272
28.6comstl∷enumerator_sequence∷iterator273
28.6.1构造274
28.6.2迭代方法275
28.6.3equal()275
28.7comstl∷enumerator_sequence∷iterator∷enumeration_context276
28.7.1为什么需要枚举上下文276
28.7.2类定义277
28.7.3构造277
28.7.4迭代器的支持方法281
28.7.5不变量282
28.8迭代器复制策略283
28.8.1comstl∷input_cloning_policy283
28.8.2comstl∷forward_cloning_policy284
28.8.3comstl∷cloneable_cloning_policy285
28.9选择默认的复制策略:应用最小意外原则286
28.10总结290
28.10.1为什么不默认使用前向迭代器290
28.10.2为什么不默认使用输入迭代器290
28.10.3为什么不把Q固定为1290
28.10.4为什么不使用标准容器290
28.11后文提要290
第29章 插曲:运用成员类型推断,纠正设计上的小疏忽291
第30章 适配COM集合292
30.1介绍292
30.2动机292
30.2.1冗长版292
30.2.2简洁版294
30.3comstl∷collection_sequence295
30.3.1公有接口295
30.3.2成员类型和常量296
30.3.3构造296
30.3.4迭代:干净地利用一个肮脏的把戏296
30.3.5size()298
30.4枚举器获取策略299
30.5总结301
第31章 聚集分散的I/O302
31.1介绍302
31.2分散/聚集I/O302
31.3分散/聚集I/OAPI303
31.3.1以COM流实现线性化303
31.3.2Platformstl∷scatterslicesequence-预告305
31.4适配ACE_Message_Queue307
31.4.1acestl∷message_queue_sequence,版本1308
31.4.2acestl∷message_queue_sequence∷iterator308
31.5吃蛋糕时间312
31.5.1再快些312
31.5.2acestl∷message_queue_sequence,版本2312
31.5.3特化标准库314
31.5.4性能316
31.6总结317
第32章 根据参数返回不同类型318
32.1介绍318
32.2向Ruby借颗宝石318
32.3C++中的双语义下标319
32.4通过字符串访问垫片扩大兼容性320
32.5整数的美中不足321
32.6选择返回类型和重载322
32.7总结322
第33章 外部迭代器失效324
33.1元素接口一致性324
33.2Windows的ListBox和ComboBox控件325
33.2.1提取元素的竞争条件326
33.2.2WinSTL中的listbox_sequence和combobox_sequence类327
33.3枚举注册表键和值331
33.3.1那问题在哪332
33.3.2WinSTL注册表库334
33.3.3处理外部迭代器失效问题334
33.3.4winstl∷basic_reg_key_sequence336
33.4总结345
33.5在CD上345
第三部分 迭代器348
第34章 增强版ostream_iterator348
34.1介绍348
34.2std∷ostreamiterator349
34.3stlsoft∷ostreamiterator350
34.3.1垫片的应用352
34.3.2安全语义352
34.3.3stlsoft∷ostream_iterator与std∷ostream-iterator的兼容性353
34.3.4违反了设计原则吗354
34.4定义流插入运算符354
34.5小结355
第35章 插曲:借助解引用代理模式,消除笨拙的输出迭代器语法356
第36章 变换迭代器359
36.1介绍359
36.2动机360
36.2.1使用std∷transform()的版本360
36.2.2使用变换迭代器的版本361
36.3定义迭代器适配器362
36.3.1创建函数362
36.3.2值类型363
36.4stlsoft∷transformiterator363
36.4.1第一个版本363
36.4.2构造365
36.4.3自增、自减运算符和指针算术方法365
36.4.4比较运算符和算术运算符365
36.4.5问题在于366
36.4.6第二个版本367
36.4.7stlsoft∷transform_iterator369
36.5复合变换370
36.6违反了DRYSPOT原则371
36.6.1使用类型别名和非临时函数对象371
36.6.2使用异质迭代器和算法372
36.6.3接受现实,但小心谨慎374
36.7没准Sequence能帮上点忙374
36.8小结375
36.9CD上的内容375
第37章 插曲:命名时谨慎为好376
第38章 成员选取迭代器378
38.1介绍378
38.2动机378
38.3stlsoft∷member_selector_iterator380
38.4创建函数的悲哀382
38.4.1以非变动性方式访问非常量数组382
38.4.2以非变动性方式访问常量数组382
38.4.3以变动性方式访问非常量数组383
38.4.4通过迭代器类,以非变动性方式访问非常量集合383
38.4.5通过迭代器类,以非变动性方式访问常量集合383
38.4.6通过迭代器类,以变动性方式访问集合385
38.4.7选取常量成员385
38.5总结386
38.6在CD上386
第39章 连接C风格字符串387
39.1动机387
39.2不灵活的版本387
39.3stlsoft∷cstring_concatenator_iterator389
39.4创建函数391
39.5总结391
39.6CD上的内容392
第40章 字符串对象的连接操作393
40.1简介393
40.2stlsoft∷string_concatenatoriterator393
40.3异质字符串类型的良好协作395
40.4但是396
40.4.1关于可赋值性396
40.4.2悬空引用396
40.4.3解决方案396
40.5小结397
第41章 适配迭代器特征类398
41.1Introduction398
41.2stlsoft∷adapted_iterator_traits398
41.2.1iterator-category400
41.2.2value-type400
41.2.3differencetype400
41.2.4pointer401
41.2.5reference401
41.2.6const_pointer和const_reference402
41.2.7effective-reference和effective_const_reference402
41.2.8effective_pointer和effective_const_pointer403
41.2.9使用这个特征类403
41.3小结404
41.4CD上的内容404
第42章 过滤迭代405
42.1介绍405
42.2无效版405
42.3用成员迭代器定义区间406
42.4那么406
42.5stlsoft∷filteriterator407
42.5.1前向迭代器语义407
42.5.2双向迭代器语义409
42.5.3随机访问迭代器语义410
42.6限制迭代器的类别410
42.7总结411
42.8在CD上411
第43章 组合多个迭代器适配412
43.1介绍412
43.2转换筛选后的迭代器412
43.3筛选转换后的迭代器413
43.4两边下注414
43.5总结414
结语415
参考书目416
热门推荐
- 2254179.html
- 3299896.html
- 2543621.html
- 1567676.html
- 1001061.html
- 3201003.html
- 267684.html
- 2775810.html
- 2049355.html
- 571042.html
- http://www.ickdjs.cc/book_92335.html
- http://www.ickdjs.cc/book_3148645.html
- http://www.ickdjs.cc/book_3635497.html
- http://www.ickdjs.cc/book_2444301.html
- http://www.ickdjs.cc/book_184254.html
- http://www.ickdjs.cc/book_891472.html
- http://www.ickdjs.cc/book_3292310.html
- http://www.ickdjs.cc/book_1377060.html
- http://www.ickdjs.cc/book_1801968.html
- http://www.ickdjs.cc/book_3080894.html