编辑推荐
“不熟悉 C++ 标准库,任何人都称不上是高效的 C++ 程序员。”——侯捷
C++11巨大革新,并已逐渐走向舞台中央,而其中变化巨大的,正是标准库
STL容器、算法、迭代器光辉犹在,众多新组件争相登场——多么陌生的强大
新标准下C++标准库所有典型应用似乎都有不同,此大师原、译著威力正在于此
1100页鸿篇巨著,基于C++11重写全书示例代码,并针对旧标准程序员剖析实现差异
砂砾淘金,取精去芜,集委员会及C++社区智慧优选出程序员*常用新标准特性
本书涵盖了所有全新的C++11标准库组件,包括:并发、分数运算、时钟和定时器、元组、新STL容器、新STL算法、新智能指针、新locale facet、随机数和分布、Type traits和实用工具、正则表达式
总编荐书,经典与你同行
内容推荐
《C++标准库(第2版)》是全球C++经典参考书籍时隔12年,基于C++11标准的全新重大升级。标准库提供了一组公共类和接口,极大地拓展了C++语言核心功能。《C++标准库(第2版)》详细讲解了每一标准库组件,包括其设计目的和方法、复杂概念的剖析、实用而高效的编程细节、存在的陷阱、重要的类和函数,又辅以大量用C++11标准实现的实用代码范例。除覆盖全新组件、特性外,《C++标准库(第2版)》一如前版,重点着眼于标准模板库(STL),涉及容器、迭代器、函数对象以及STL算法。此外,《C++标准库(第2版)》同样关注lambda表达式、基于区间的for循环、move语义及可变参数模板等标准库中的新式C++编程风格及其影响。
作者简介
Nicolai M. Josuttis是一名独立技术顾问,为电信、交通、金融和制造业设计过大中型软件系统。他曾是C++标准委员会库工作小组成员,因其权威著作而在编程领域声名鹊起。除了最为畅销的《C++标准库》(第1版出版于1999年),其著作还包括C++ Templates:The Complete Guide(与DavidVandevoorde合著,由Addison-Wesley于2003年出版),以及SOA in Practice:The Art of Distributed System Design(由O’Reilly Media于2007年出版,简体中文版《SOA实践指南——分布式系统设计的艺术》由电子工业出版社于2008年出版)。
译者侯捷:计算机技术书籍的作家、译者、书评人,长期活跃于C++技术分享与教学领域。著有《深入浅出MFC》《多型与虚拟》《STL源码剖析》《无责任书评》三卷,译有众多脍炙人口的权威技术书籍,包括Meyers所著的“Effective C++”系列。侯捷兼任教职于元智大学、同济大学、南京大学。
目录
第 2 版译序 xxi
第 2 版序言 xxiii
第 2 版致谢 xxiv
第 1 版序言 xxv
第 1 版致谢 xxvi
1 关于本书 1
1.1 缘起 1
1.2 阅读前的必要基础 2
1.3 本书风格与结构 2
1.4 如何阅读本书 4
1.5 目前发展情势 5
1.6 范例代码及额外信息 5
1.7 反馈 5
2 C++ 及标准库简介 7
2.1 C++ Standard 的历史 7
2.1.1 C++11 Standard 常见疑问 8
2.1.2 C++98 和 C++11 的兼容性 9
2.2 复杂度与 Big-O 标记 10
3 语言新特性 13
3.1 C++11 语言新特性 13
3.1.1 微小但重要的语法提升 13
3.1.2 以auto完成类型自动推导 14
3.1.3 一致性初始化(UniformInitialization)与初值列(Initializer List) 15
3.1.4 Range-Based for循环 17
3.1.5 Move 语义和 RvalueReference 19
3.1.6 新式的字符串字面常量(StringLiteral) 23
3.1.7 关键字noexcept 24
3.1.8 关键字constexpr 26
3.1.9 崭新的 Template 特性 26
3.1.10 Lambda 28
3.1.11 关键字decltype 32
3.1.12 新的函数声明语法(NewFunction Declaration Syntax) 32
3.1.13 带领域的(Scoped) Enumeration 32
3.1.14 新的基础类型(NewFundamental Data Type) 33
3.2 虽旧犹新的语言特性 33
3.2.1 基础类型的明确初始化(ExplicitInitialization for Fundamental Type) 37
3.2.2 main()定义式 37
4 一般概念 39
4.1 命名空间(Namespace)std 39
4.2 头文件(Header File) 40
4.3 差错和异常(Error andException)的处理 41
4.3.1 标准的 Exception Class(异常类) 41
4.3.2 异常类(Exception Class)的成员 44
4.3.3 以 Class exception_ptr传递异常 52
4.3.4 抛出标准异常 53
4.3.5 自标准异常类派生 54
4.4 Callable Object(可被调用的对象) 54
4.5 并发与多线程 55
4.6 分配器(Allocator) 57
5 通用工具 59
5.1 Pair 和 Tuple 60
5.1.1 Pair 60
5.1.2 Tuple(不定数的值组) 68
5.1.3 Tuple 的输入/输出 74
5.1.4 tuple和pair转换 75
5.2 Smart Pointer(智能指针) 76
5.2.1 Class shared_ptr 76
5.2.2 Class weak_ptr 84
5.2.3 误用 Shared Pointer 89
5.2.4 细究 Shared Pointer 和 Weak Pointer 92
5.2.5 Class unique_ptr 98
5.2.6 细究 Class unique_ptr 110
5.2.7 Class auto_ptr 113
5.2.8 Smart Pointer 结语 114
5.3 数值的极值(Numeric Limit) 115
5.4 Type Trait 和 Type Utility 122
5.4.1 Type Trait 的目的 122
5.4.2 细究 Type Trait 125
5.4.3 Reference Wrapper(外覆器) 132
5.4.4 Function Type Wrapper(外覆器) 133
5.5 辅助函数 134
5.5.1 挑选最小值和最大值 134
5.5.2 两值互换(Swapping) 136
5.5.3 增补的“比较操作符”(ComparisonOperator) 138
5.6 Class ratio<>的编译期分数运算 140
5.7 Clock 和 Timer 143
5.7.1 Chrono 程序库概观 143
5.7.2 Duration(时间段) 144
5.7.3 Clock(时钟)和 Timepoint(时间点) 149
5.7.4 C 和 POSIX 提供的 Date/Time 函数 157
5.7.5 以计时器停滞线程(Blocking withTimer) 160
5.8 头文件、和 161
5.8.1 内的各项定义 161
5.8.2 内的各种定义 162
5.8.3
前言
第2版序言
我从未想过本书第1 版会卖得如此长久。现在,经过12 年的等待,出新版本的时候到了,一个涵盖最新C++11标准的新版本。
注意,其中的意义比仅仅添加新子库更多更大。C++ 已经改变了,其标准库的几乎所有典型应用如今看起来都有那么一点不同。这不是因为语言出现巨大变化,而是许多小改变造成的结果,例如运用rvalue reference 和move semantic、range-based 书乯乲loop、乡乵乴乯,以及新的template特性。因此,本书不但展现原标准库的补充特性及新成员,书中所有例子也都重新写过,或至少局部改写。尽管如此,为了支持那些仍然使用“旧” C++ 环境的程序员,本书会在遭遇C++版本差异时加以描述。
我学习C++11有一段艰难的历程。大约两年前我开始看C++11 但并未追随标准化的脚步,因此确实遭遇了理解上的麻烦。但是标准委员会的人帮助我描述及表现C++11 新特性,一如它们如今呈现的样貌。
最后,请注意,本书有个困扰:虽然份量上由800 页成长到超过1 100 页,我还是无法完整呈现C++ 标准库。标准库中单单针对C++11 就有大约750 页的描述,都是十分精练的文字,没有太多说明。基于这个原因,我必须取舍哪些特性需要描述,并决定以怎样的粒度描述之。再一次, C++ 社区中的许多人帮助我做出决定。我的企图集中在普通程序员需要的东西。若干本书舍弃的部分被我做成一份补充篇章放在本书官网乨乴乴买为丯丯乷乷乷丮乣买买乳乴乤乬乩乢丮乣乯乭。即便如此,你还是会在C++标准规格书中找到我未曾讨论的细节。
教学的艺术,并非体现在“呈现每一面”,而是一种“沙里淘金”的艺术,从中取得最大价值。但愿我是成功的。
媒体评论
C++标准库提供了一组公共类和接口,极大地拓展了C++语言核心功能。然而,C++标准库并非不言自明。为了充分利用其组件,受益于其强大威力,真正能够满足你学习需要的参考资料绝不能仅仅列出那些类及其函数。
《C++标准库(第2版)》对现已并入新版ANSI/ISOC++ 语言标准(C++11)的标准库做了描述。本书对于每个标准库组件都提供了综合的文档,包括:关于其设计目的和设计方法的概览;对于复杂概念的清晰解读;为了有效利用所需的实用编程细节;存在的一些陷阱;实际运用中最重要的类和函数的确切签名和定义;以及大量实用代码范例。本书尤其着眼于标准模板库(STL),介绍了容器、迭代器、函数对象以及STL算法。
本书还介绍了标准库中的新式C++编程风格及其影响。其中包括lambda表达式、基于区间的for循环、move语义以及可变参数模板。
|