设为首页 加入收藏

TOP

STL扩展技术手册 目录
2013-10-07 00:32:33 来源: 作者: 【 】 浏览:66
Tags:STL 扩展 技术 手册 目录

目录

目录
译者序
前言
致谢
序言
编排体例
第1章.标准模板库
1.1.核心概念
1.2.容器
1.2.1.序列容器
1.2.2.关联容器
1.2.3.存储空间的连续性
1.2.4.交换
1.3.迭代器
1.3.1.输入迭代器
1.3.2.输出迭代器
1.3.3.前向迭代器
1.3.4.双向迭代器
1.3.5.随机访问迭代器
1.3.6.成员选取运算符
1.3.7.预定义的迭代器适配器
1.4.算法
1.5.函数对象
1.6.分配器

第2章.扩展STL:STL与真实世界的碰撞
2.1.术语
2.2.集合
2.2.1.可变性
2.3.迭代器
2.3.1.可变性
2.3.2.遍历
2.3.3.在编译期决定特性
2.3.4.元素引用类别
2.3.5.共享状态信息和独立状态信息
1.3.1节)。在标准库中这方面唯一的例子是istream_iterator和
2.3.6.需要修改迭代器精化的分类么

第3章.元素引用类别
3.1介绍
3.2.C++(www.cppentry.com)引用
3.2.1.STL容器中的元素引用
3.3.元素引用类别的分类法
3.3.1.持久引用
3.3.2.固定引用
3.3.3.可失效引用
3.3.4.瞬时引用
3.3.5.按值临时引用
3.3.6.空引用
3.4.使用元素引用类别
3.4.1.在编译时检测引用类别
3.4.2.使用编译器帮助避免迭代器未定义行为
3.5.定义operator->()
3.6.元素引用类别:尾声

第4章.奇异去临时引用

第五章DRYSPOT原则
5.1C++(www.cppentry.com)编程(www.cppentry.com)中符合DRYSPOT的做法
5.1.1常量
5.1.2.dimensionof()
5.1.3.创建函数
5.2.C++(www.cppentry.com)编程(www.cppentry.com)中不太符合DRYSPOT的做法
5.2.1.父类
5.2.2.函数返回类型
5.3.封闭的名字空间

第6章抽象泄漏法则

第7章契约式编程(www.cppentry.com)
7.1.强制的类型
7.2.强制的机制

第8章.约束
8.1.利用C++(www.cppentry.com)类型系统
8.1中:
8.2.静态断言

第9章.垫片
9.1.介绍
9.2.主要的垫片
9.2.1.属性垫片
9.2.2.转换垫片
9.3.复合垫片
9.3.1.字符串访问垫片

第10章鸭规则和鹅规则:不完备结构一致性的发端
10.1一致性
10.1.1类型一致性
10.1.2结构一致性
10.1.3 鸭规则和鹅规则
10.2显式语义一致性
10.2.1概念
10.2.2给成员类型打标签
10.2.3垫片
10.3交集一致性

第十一章资源获取即初始化
11.1资源可变性
11.2资源来源

第12章模板工具
12.1.特征类
12.1.1.base_type_traits
12.1.2.sign_traits
12.1.3.类型的特性:迷你特征
12.1.4.is_integral_type
12.1.5.is_signed_type
12.1.6.is_fundamental_type

第13章。
12.1.7.is_same_type
12.2.类型生成器
12.2.1.stlsoft::allocator_selector
12.3.真正的typedef

第13章.推断式接口适配:编译时适配接口不全的类
13.1.介绍
13.2.适配接口不全的类型
13.3.适配非变动性集合
13.4.推断式接口适配
13.4.1.类型选择
13.4.2.类型检测
13.4.3.类型修正
13.5.把IIA应用于区间

第14章Henney假说:当模板参数表太长

第15章通过equal()减少友元函数的使用
15.1警惕非成员友元函数的滥用
15.2集合及其迭代器

第16章基本组件
16.1.介绍
16.2.auto_buffer
16.2.1.它不是容器!
16.2.2.类接口
16.2.3.拷贝
16.2.4.分配器宜最后
16.2.5.swap()
16.2.6.性能
16.3.filesystem_traits
16.3.1.成员类型
16.3.2.通用字符串处理
16.3.3.文件系统名字处理
16.3.4.文件系统状态操作
16.3.5.文件系统控制操作
16.3.6.返回类型和错误处理
16.4.file_path_buffer
16.4.1.basic_
16.4.2.UNIX和PATH_MAX
16.4.3Windows和MAX_PATH
16.4.4.缓冲区的使用
16.5.scoped_handle
16.6.dl_call()

第二部分集合
第17章适配globAPI
17.1简介
17.1.1动机
4.0)
17.2globAPI
17.2解析使用原始API的版本
17.3.unixstl::glob_sequence
17.3.1公有接口
17.3.2成员类型
17.3.3成员变量
17.3.4标志
17.3.5构造
17.3.6glob_sequence元素个数和元素访问
17.3.7迭代
17.3.8.init_glob_()
17.13。
17.4.解析使用glob_sequence实现的版本
17.5小结

第18章插曲:构造函数冲突以及不良的设计——即

第19章.适配opendir/readdirAPI
19.1.介绍
19.1.1.动机
7.1)
19.1.2.opendir/readdirAPI
19.2.分析直接使用API的代码
19.3.unixstl::readdir_sequence
19.3.1.成员类型和成员常量
19.3.2.构造
19.3.3.元素迭代和集合大小相关的方法
19.3.4.提取属性的方法
19.3.5.const_iterator,版本1
19.7所示。
19.3.6.使用版本1
19.3.7.const_iterator,版本2:拷贝语义
19.3.8.operator++()
19.3.9.迭代器类别和可适配的成员类型
19.3.10.operator->()
19.3.11.支持fullPath和absolutePath标志
19.16所示。
19.4.其它的实现方法
19.4.1.把迭代结果保存为快照
19.4.2.把迭代结果保存为迭代器
19.5.总结

第20章适配FindFirstFile/FindNextFileAPI
20.1介绍
20.1.1动机
20.1.2FindFistFile/FindNextFileAPI
20.2对例子的分解
20.2.1冗长版本
20.2.2精简版本
20.2.3重解析点和无限递归
20.3basic_findfile_sequence的设计
20.4.winstl::basic_findfile_sequence
20.4.1类的接口
20.4.2构造
20.4.3迭代
20.4.4如果编译器不支持异常
20.11中给出。
20.5.1构造
20.5.3小节中将对此进行详细解释。
20.5.2.find_first_file_()
20.5.3.operator++()
20.23,该清单中还列出了其中四个方法的实现。
20.7垫片
20.9小结
20.10结尾:用recls进行文件系统遍历

第21章.插曲:枚举FTP服务器目录——保持效率
21.1.inetstl::basic_findfile_sequence
21.2.inetstl::basic_ftpdir_sequence

第22章遍历进程和模块
22.1.集合的特征
22.2.winstl::pid_sequence
22.2.1.基于组合的简单实现
22.2.2.获取进程ID
22.2.3.没有异常支持时的工作方式
22.3.winstl::process_module_sequence
22.4.枚举一个系统中的所有模块
22.5.排除系统伪进程
22.6.处理缺失API头文件的情况
22.7.总结

第23章菲波那契序列
23.1介绍
23.2菲波那契序列
23.3STL序列表示的菲波那契数列
23.3.1无限序列的接口
23.3.2为序列添加契约
23.3.3换用别的值类型?
23.4.4对值类型进行约束
23.3.5抛出std::overflow_error?
23.4可发现性的欠缺
23.5定义有限上界
23.5.1最终还是要用迭代器?
23.5.2由构造函数限定的区间
23.5.3.True_Typedefs
23.6小结

第24章.适配MFC的CArray容器族
24.1.介绍
24.2.动机
24.3.模拟std::vector
24.4.设计时的考虑
24.4.1.MFC的数组容器族
24.4.2.CArray_traits
24.6)。尽管这些容器缺少定义良好的公共成员类型,但是谢天谢地,它们的结
24.4.3.数组适配器类的设计
24.4.4.以抽象方式操纵状态
24.4.5.Copy-and-Swap惯用法
24.4.6.编写集合的接口
24.4.7.教学方法
24.5.mfcstl::CArray_adaptor_base的接口
24.6.mfcstl::CArray_cadaptor
24.6.1.模板声明和继承
24.6.2.应用CRTP
24.6.3.CArray_cadaptor的构造
24.6.4.operator[]()
24.7.mfcstl::CArray_iadaptor
24.8.CArray_adaptor_base的构造
24.9.内存分配器
24.10.元素访问方法
24.11.元素迭代
24.11.1.begin()和end()
24.11.2.rbegin()和rend()
24.12.和容器大小相关的方法
24.12.1.内存分配优化
24.13.容器容量相关的方法
24.14.比较相关的方法
24.22所示的比较方法。
24.15.修改容器结构的方法
24.15.1.push_back()
24.15.2.assign()
24.15.3.pop_back()和clear()
24.15.4.erase()
24.32所示。
24.15.5.insert()
24.16.赋值和swap()
24.16.1.swap()
24.17.总结
24.18.在CD上

第25章环境变量的map
25.1.介绍
25.2.动机
25.5.规划接口
25.6.通过名字查找
25.6.1.选择1:返回固定/瞬时引用,指向一个缓存对象,具有最新值
25.6.2.选择2:返回固定引用,指向一个缓存对象,具有快照值
25.6.3.选择3:返回固定引用,指向一个缓存对象,具有最新值
25.6.4.选择4:返回按值临时引用,具有最新值
25.6.5.通过名字查找:尾声
25.7.通过名字插入、更新和删除值
25.8.迭代
25.8.1.第1版:连续迭代器
25.8.2.第2版:双向迭代器
25.8.3.第3版:快照
25.8.4.第4版:引用计数的快照
25.9.最终的迭代实现
25.9.1.可变的快照?
25.9.2.创建快照
25.9.3.const_iterator嵌套类
25.9.4.insert()方法
25.9.5.erase()方法
25.9.6.operator[]()和lookup()
25.9.7.snapshot嵌套类
25.10.异质的引用类别?
25.11.size()和下标索引
25.12.总结
25.13.在CD上

26.1.序言
26.2.介绍
26.3.第1版:前向迭代
26.3.1.zorder_iterator,第1版
26.3.2.window_peer_sequence,第1版
26.4.第2版:双向迭代
26.5.处理外部更改
26.6.winstl::child_window_sequence
26.7.双向迭代器的蓝调音乐
26.7.1.end()标记的陷阱
26.7.2.致命的双重解引用
26.7.3.当双向迭代器不是前向迭代器,而是可逆可复制迭代器
26.8.winstl::zorder_iterator:自身的反转
26.8.1.zorder_iterator特征类
26.12显示了这两个特征类必需的前向声明和
26.8.2.zorder_iterator_tmpl<>
26.8.3.反向的语义
26.9.同级窗口序列的定稿
26.10.总结
26.11.Z平面:尾声

第27章.字符串分词
27.1.介绍
27.2.strtok()
27.3.SynesisSTL::StringTokeniser
27.4.字符串分词的用例
27.5.字符串分词的其它选择
27.5.1.strtok_r()
27.5.2.IOStreams
27.5.3.stlsoft::find_next_token()
27.5.4.boost::tokenizer
27.6.stlsoft::string_tokeniser
27.6.2.确定迭代器类别和元素引用类别
27.7.测试代码
27.7.1.以单个字符作为分隔符
27.7.2.字符串作为分隔符
27.7.3.保留空白字段
27.7.4.拷贝还是引用:考虑使用“字符串视图”(StringView)
27.7.4.1.s=view,v=view
27.7.4.2.s=string,v=view
27.7.4.3.s=view,v=string
27.7.4.4.s=string,v=string
27.7.5.字符集作为分隔符
27.8.愚蠢的策略类
27.8.1.经由继承重构模板参数
27.8.2.类型生成器模板
27.8.3.关于Henney假说
27.9.性能
27.10.总结

第28章.适配COM枚举器
28.1.介绍
28.2.动机
28.2.1.冗长版
28.2.2.短小版
28.3.COM枚举器
28.3.1.IEnumXXXX::Next()
28.3.2.IEnumXXXX::Skip()
28.3.3.IEnumXXXX::Reset()
28.3.4.IEnumXXXX::Clone()
28.3.5.枚举器的各种值类型
28.4.分解冗长版
28.5.comstl::enumerator_sequence
28.5.1.enumerator_sequence的公共接口
28.5.2.成员类型及成员常量
28.5.3.值策略(ValuePolicies)
28.5.4.成员变量
28.5.5构造函数
28.5.6.迭代方法
28.5.7.迭代器方法的const限定是错误的?
28.5.8.破坏了值语义
28.6.1.构造
28.6.2.迭代方法
28.6.3.equal()
28.7.1.为什么需要枚举上下文
28.7.2.类定义
28.7.3.构造
28.16列出了拷贝构造函数,它需要一个枚举器接口的指针和被拷贝实例指针作
28.17)。该函数的调用位置在迭代器类的转换构造函数中,而后者由迭代器序
28.18)。注意,在不变量测试的周围有局部增减操作,这是为了避免该测试检
28.7.4.迭代器的支持方法
28.7.5.不变量
28.8.迭代器拷贝策略
28.8.1.comstl::input_cloning_policy
28.8.2.comstl::forward_cloning_policy
28.9.选择默认的拷贝策略:应用最小意外原则
28.9.1.empty()
28.10.总结
28.10.1.为什么不默认使用前向迭代器
28.10.2.为什么不默认使用输入迭代器
28.10.3.为什么不把Q固定为1?
28.10.4.为什么不使用标准容器
28.11.后文提要

第29章插曲:运用成员类型推断,纠正设计上的小
13.4.1节),这主要和编译器是否支持模板偏特化有关。因为标准要求这种支

第30章适配COM集合
30.1.介绍
30.2.动机
30.2.1.冗长版
30.2.2.简洁版
30.3.comstl::collection_sequence
30.3.1.公有接口
30.3.2.成员类型和常量
30.4节讨论。(如果你喜欢提问式教学,你可以先设想一下这个策略类型会有
30.3.3.构造
30.3.4.迭代:干净地利用一个肮脏的把戏
30.3.5.size()?
30.4.枚举器获取策略
30.5.总结

第31章聚集分散的I/O
31.1.介绍
31.2.分散/聚集I/O
31.3.分散/聚集I/OAPI
31.3.1.以COM流实现线性化
31.4.适配ACE_Message_Queue
31.5所示(简洁起见,省去错误处理)。
31.5.吃蛋糕时间
31.5.1.再快些!
31.5.3.特化标准库
31.5.4.性能
31.6.总结
32.1.介绍
32.2.向Ruby借颗宝石
32.3.C++(www.cppentry.com)中的双语义下标
32.4.通过字符串访问垫片扩大兼容性
32.5.整数的美中不足
32.6.选择返回类型和重载
32.6.1.禁止有符号数作为下标索引
32.7.总结

第33章外部迭代器失效
33.1.元素接口一致性
23.2.4.3)。相反,在以下代码中,只有b会失效:
33.2.Windows的ListBox和ComboBox控件
33.2.1.提取元素的竞争条件
33.3.枚举注册表键和值
33.3.1.那问题在哪
33.3.2.WinSTL注册表库
33.1所示。
33.3.3.处理外部迭代器失效问题
33.3.4.winstl::basic_reg_key_sequence
33.4.总结
33.5.在CD上

第三部分:迭代器
34.1介绍
34.2.std::ostream_iterator
34.2.1.将difference_type定义为void
34.3.stlsoft::ostream_iterator
34.3.1垫片的应用
34.3.2安全语义
34.3.4违反了设计原则吗?
34.4定义流插入运算符
34.5小结

第35章插曲:借助解引用代理模式,消除笨拙的输

第36章变换迭代器
36.1介绍
36.2动机
36.2.1使用std::transform()的版本
36.2.2使用变换迭代器的版本
36.5列出的完全手写算法的版本。
8.45
3.4
36.2所示。不过这种情况下,手工编写代码的版本,性能普遍比使用
3.4
36.3定义迭代器适配器
36.3.1创建函数
36.3.2值类型
36.4.stlsoft::transform_iterator
36.4.1第一个版本
36.4.2构造
36.4.3自增、自减运算符和指针算术方法
36.4.4比较运算符和算数运算符
36.4.5问题在于……
36.4.6第二个版本
36.4.7.stlsoft::transform_iterator
36.5复合变换
36.6违反了DRYSPOT原则?
36.6.1使用类型别名和非临时函数对象
36.6.2使用异质迭代器和算法
36.6.3接受现实,但小心谨慎
36.7没准Sequence能帮上点忙?
36.8小结
36.9CD上的内容

第37章插曲:命名时谨慎为好

第38章.成员选取迭代器
38.1.介绍
38.2.动机
38.2.1.std::accumulate()
7.1
38.3.stlsoft::member_selector_iterator
38.4.创建函数的悲哀
38.4.1.以非变动性方式访问非常量数组
38.4.2.以非变动性方式访问常量数组
38.4.3.以变动性方式访问非常量数组
38.4.4.通过迭代器类,以非变动性方式访问非常量集合
38.4.5.通过迭代器类,以非变动性方式访问常量集合
38.4.6.通过迭代器类,以变动性方式访问集合
38.4.7.选取常量成员
38.5.总结
38.6.在CD上

第39章.连接C风格字符串
39.1.动机
39.2.不灵活的版本
39.4.创建函数
39.5.总结
39.6.CD上的内容

第40章字符串对象的连接操作
40.1简介
40.3.异质字符串类型的良好协作
40.4但是……
40.4.1关于可赋值性
40.4.2悬空引用
40.4.3解决方案
40.5小结

第41章适配迭代器特征类
41.1.Introduction
41.2.stlsoft::adapted_iterator_traits
41.2.1.iterator_category
41.2.2.value_type
41.2.3.difference_type
41.2.4.pointer
41.2.5.reference
41.2.9使用这个特征类
41.3小结
41.4CD上的内容

第42章过滤迭代
42.1.介绍
42.2.无效版
42.3.用成员迭代器定义区间
42.4.那么……?
42.5.stlsoft::filter_iterator
42.5.1.前向迭代器语义
42.5.2.双向迭代器语义
42.5.3.随机访问迭代器语义
42.6.限制迭代器的类别
42.7.总结
42.8.在CD上

第43章.组合多个迭代器适配
43.1.介绍
43.2.转换筛选后的迭代器
43.2.1.创建函数
43.3.筛选转换后的迭代器
43.4.两边下注
43.5.总结

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇STL扩展技术手册 译者序 下一篇STL扩展技术手册 前言

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: