Boost库以不同的方式涵盖了上述3个方面。本书所覆盖的12个库中,有6个库已经为即将发布的C++库技术报告(Library Technical Report)所接受,这意味着它们很有可能成为下一版本的标准库的成员。因此,学习这些库具有长远的价值。希望大家能认为本书是一个很有用的工具,可以更好地帮助大家使用、理解和扩展Boost库。希望在本书的帮助下,大家可以把这些库以及它们所包含的思想整合到自己的设计和实现中。
网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 超越C++标准库(Boost库导论) |
分类 | |
作者 | (美)卡尔森 |
出版社 | 清华大学出版社 |
下载 | ![]() |
简介 | 编辑推荐 Boost库以不同的方式涵盖了上述3个方面。本书所覆盖的12个库中,有6个库已经为即将发布的C++库技术报告(Library Technical Report)所接受,这意味着它们很有可能成为下一版本的标准库的成员。因此,学习这些库具有长远的价值。希望大家能认为本书是一个很有用的工具,可以更好地帮助大家使用、理解和扩展Boost库。希望在本书的帮助下,大家可以把这些库以及它们所包含的思想整合到自己的设计和实现中。 内容推荐 本书是市面上第一本专门讨论Boost库的著作。书中首先概括性地简介了Boost的所有58个库,然后全面深入地阐述了12个十分有用的Boost库,展示了它们如何与C++标准库配合以及如何扩展C++标准库。 本书不仅介绍了Boost库的功能、使用方法及注意事项,而且还深入讨论了Boost库的设计理念、解决问题的思想和技巧以及待处理的问题。因此,本书是一本了解Boost库并探索其机理的实用手册。 目录 第Ⅰ部分 通用库 第1章 Smart_ptr库 3 1.1 Smart_ptr库如何改进程序 3 1.2 何时需要智能指针 3 1.3 Smart_ptr库如何适用于 标准库 4 1.4 智能指针scoped_ptr 5 1.4.1 头文件 5 1.4.2 成员 5 1.4.3 自由函数 6 1.4.4 使用方法 7 1.4.5 不需要手动删除 7 1.4.6 和智能指针auto_ptr 几乎一样 8 1.4.7 智能指针scoped_ptr和pimpl 惯用法 9 1.4.8 智能指针scoped_ptr不同 于const auto_ptr 11 1.4.9 小结 11 1.5 智能指针scoped_array 11 1.6 智能指针shared_ptr 12 1.6.1 头文件 12 1.6.2 成员 14 1.6.3 自由函数 16 1.6.4 使用方法 16 1.6.5 回顾Pimpl惯用法 17 1.6.6 智能指针shared_ptr和标准 库容器 17 1.6.7 智能指针shared_ptr和其他 资源 19 1.6.8 使用自定义删除工具 的安全性 20 1.6.9 从this创建智能指针 shared_ptr 21 1.6.10 小结 22 1.7 智能指针shared_array 23 1.8 智能指针intrusive_ptr 23 1.8.1 头文件 23 1.8.2 成员 24 1.8.3 自由函数 25 1.8.4 使用方法 25 1.8.5 提供引用计数器 26 1.8.6 把this用作智能指针 29 1.8.7 支持不同的引用计数器 30 1.8.8 小结 32 1.9 智能指针weak_ptr 33 1.9.1 头文件 33 1.9.2 成员 33 1.9.3 使用方法 34 1.9.4 一个常见的问题 35 1.9.5 两种从weak_ptr创建 shared_ptr的惯用法 38 1.9.6 小结 39 1.10 Smart_ptr库小结 39 第2章 Conversion库 41 2.1 Conversion库如何改进程序 41 2.2 polymorphic_cast转型函数 41 2.2.1 头文件 41 2.2.2 使用方法 42 2.2.3 向下转型和交叉转型 42 2.2.4 dynamic_cast和polymorphic _cast的对比 44 2.2.5 polymorphic_cast并不总是 正确的选择 45 2.2.6 小结 46 2.3 polymorphic_downcast 转型函数 47 2.3.1 头文件 47 2.3.2 使用方法 48 2.3.3 小结 49 2.4 numeric_cast转型函数 49 2.4.1 头文件 49 2.4.2 使用方法 50 2.4.3 将较大的类型赋值给较小 的类型 50 2.4.4 特殊情况:目标类型是 无符号整数 52 2.4.5 有符号和无符号整数类型 的混用 53 2.4.6 浮点类型 54 2.4.7 小结 55 2.5 lexical_cast转型函数 56 2.5.1 头文件 56 2.5.2 使用方法 56 2.5.3 使lexical_cast函数工作 的方法 56 2.5.4 用lexical_cast函数进行 泛型编程 57 2.5.5 使类适用于lexical _cast函数 58 2.5.6 小结 59 2.6 Conversion库小结 59 第3章 Utility库 61 3.1 Utility库如何改进程序 61 3.2 BOOST_STATIC_ASSERT 断言 61 3.2.1 头文件 61 3.2.2 使用方法 62 3.2.3 函数作用域中的BOOST _STATIC_ASSERT 62 3.2.4 小结 63 3.3 checked_delete函数 63 3.3.1 头文件 63 3.3.2 使用方法 64 3.3.3 到底发生了什么问题 64 3.3.4 使用checked_delete解决 问题 66 3.3.5 小结 66 3.4 noncopyable类 67 3.4.1 头文件 67 3.4.2 使用方法 67 3.4.3 使类无法复制的方法 68 3.4.4 使用noncopyable类 69 3.4.5 记住Big Three定律 69 3.4.6 小结 71 3.5 addressof函数 71 3.5.1 头文件 71 3.5.2 使用方法 71 3.5.3 快速了解一下怀有 恶意的人 72 3.5.4 其他问题的迅速解决方法 72 3.5.5 小结 73 3.6 enable_if函数 73 3.6.1 头文件 73 3.6.2 使用方法 75 3.6.3 小结 79 3.7 Utility库小结 79 第4章 Operators库 81 4.1 Operators库如何改进程序 81 4.2 Operators库如何适用于 标准库 82 4.3 Operators库 82 4.3.1 头文件 82 4.3.2 解引用运算符 85 4.3.3 复合算术运算符 86 4.4 使用方法 87 4.4.1 对比较运算符的支持 88 4.4.2 Barton-Nackmann技巧 90 4.4.3 严格弱序 91 4.4.4 避免对象膨胀 93 4.4.5 运算符和各种类型 94 4.4.6 相等和等价之间的差别 95 4.4.7 算术类型 98 4.4.8 该使用运算符时再使用 运算符 99 4.4.9 理解Operators库的工作 机制 100 4.4.10 其他内容 102 4.5 Operators库小结 103 第5章 Regex库 104 5.1 Regex库如何改进程序 104 5.2 Regex库如何适用于标准库 104 5.3 Regex库 105 5.3.1 头文件 105 5.3.2 成员 105 5.3.3 自由函数 106 5.4 使用方法 107 5.4.1 输入验证 108 5.4.2 查找 110 5.4.3 替换 112 5.4.4 使用者常见的误解 113 5.4.5 关于重复和贪婪 113 5.4.6 regex_iterator简介 114 5.4.7 通过regex_token_iterator 分割字符串 116 5.4.8 更多的正则表达式 116 5.4.9 无效的正则表达式 117 5.5 Regex库小结 119 第Ⅱ部分 容器和数据结构 第6章 Any库 123 6.1 Any库如何改进程序 123 6.2 Any库如何适用于标准库 123 6.3 Any库 124 6.3.1 头文件 124 6.3.2 成员 124 6.3.3 自由函数 125 6.3.4 异常 126 6.4 使用方法 126 6.4.1 存储任意的类型 127 6.4.2 属性类 129 6.4.3 any类其他成员函数的用法 131 6.4.4 在any中存储指针 133 6.4.5 一个更好的办法—— 使用 智能指针shared_ptr 133 6.4.6 没有输入和输出运算符 的原因 137 6.4.7 通过any_out增加对输出 的支持 137 6.4.8 谓词 140 6.4.9 非空值计数 141 6.4.10 从容器中提取特定类型 的元素 141 6.4.11 使用谓词和提取器 142 6.4.12 适应标准库适配器的需求 144 6.5 Any库小结 146 第7章 Variant库 147 7.1 Variant库如何改进程序 147 7.2 Variant库如何适用于标准库 148 7.3 Variant库 148 7.3.1 头文件 148 7.3.2 成员 149 7.4 使用方法 150 7.4.1 访问Variant 152 7.4.2 泛型访问器 155 7.4.3 二元访问器 156 7.4.4 其他功能 158 7.5 Variant库小结 158 第8章 Tuple库 159 8.1 Tuple库如何改进程序 159 8.2 Tuple库如何适用于标准库 159 8.3 Tuple库 160 8.3.1 头文件 160 8.3.2 成员 161 8.3.3 自由函数 162 8.3.4 关系运算符 162 8.4 使用方法 163 8.4.1 元组的构造 163 8.4.2 访问tuple的元素 165 8.4.3 tuple的赋值和复制构造 166 8.4.4 tuple的比较 167 8.4.5 将tuple的元素绑定到变量 170 8.4.6 tuple的流操作 171 8.4.7 关于tuple的更多知识 172 8.4.8 tuple和for_each 175 8.5 Tuple库小结 178 第Ⅲ部分 函数对象和高阶编程 第9章 Bind库 181 9.1 Bind库如何改进程序 181 9.2 Bind库如何适用于标准库 182 9.3 Bind库 182 9.4 使用方法 183 9.4.1 调用成员函数 183 9.4.2 绑定的工作机制 186 9.4.3 占位符和参数的更多介绍 188 9.4.4 动态排序标准 190 9.4.5 函数组合:第Ⅰ部分 193 9.4.6 函数组合:第Ⅱ部分 195 9.4.7 在bind表达式中选择值语 义还是指针语义 195 9.4.8 虚函数同样可以绑定 197 9.4.9 绑定到成员变量 198 9.4.10 绑定还是不绑定 199 9.4.11 让绑定器处理状态 201 9.4.12 Boost.Bind和Boost .Function之间的配合 203 9.5 Bind库小结 203 第10章 Lambda库 205 10.1 Lambda库如何改进程序 205 10.2 Lambda库如何适用于 标准库 206 10.3 Lambda库 206 10.4 使用方法 207 10.4.1 一个简单的开始 207 10.4.2 当运算符不够使用时 使用绑定 209 10.4.3 如果不喜欢_1、_2和 _3占位符,如何重命名 它们 212 10.4.4 常量和变量的命名 213 10.4.5 ptr_fun和mem_fun何去 何从 215 10.4.6 无需<functional>的算术 操作 217 10.4.7 编写可读的谓词 218 10.4.8 使函数对象适用于 Boost.Lambda库 221 10.4.9 lambda表达式中的 控制结构 224 10.4.10 lambda表达式中的转型 228 10.4.11 构造和析构 231 10.4.12 异常的抛出和捕获 235 10.5 Lambda库小结 238 第11章 Function库 239 11.1 Function库如何改进程序 239 11.2 Function库如何适用于 标准库 239 11.3 Function库 239 11.3.1 头文件 239 11.3.2 使用首选语法的声明 240 11.3.3 使用兼容语法的声明 240 11.3.4 成员 241 11.4 使用方法 242 11.4.1 回调的基础 243 11.4.2 类成员函数 246 11.4.3 带状态的函数对象 247 11.4.4 在Boost.Function中 使用Boost.Bind 250 11.4.5 在Boost.Function中使用 Boost.Lambda 255 11.4.6 代价的考虑 255 11.4.7 幕后的细节 256 11.5 Function库小结 259 第12章 Signals库 260 12.1 Signals库如何改进程序 260 12.2 Signals库如何适用于 标准库 260 12.3 Signals库 261 12.3.1 头文件 261 12.3.2 类型 262 12.3.3 成员 262 12.4 使用方法 263 12.4.1 插槽分组 264 12.4.2 带参数的signal 267 12.4.3 对结果进行组合 274 12.4.4 signal永远不能复制 277 12.4.5 管理连接 277 12.4.6 使用Bind和Lambda 创建插槽 280 12.5 Signals库小结 282 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。