图书介绍

C++标准库 第2版PDF|Epub|txt|kindle电子书版本网盘下载

C++标准库 第2版
  • Nicolai M. Josuttis著;侯捷译 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121260896
  • 出版时间:2015
  • 标注页数:1099页
  • 文件大小:110MB
  • 文件页数:1126页
  • 主题词:C语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

C++标准库 第2版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

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+498和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 一致性初始化(Uniform Initialization)与初值列(Initializer List)15

3.1.4 Range-Based for循环17

3.1.5 Move语义和Rvalue Reference19

3.1.6 新式的字符串字面常量(String Literal)23

3.1.7 关键字noexcept24

3.1.8 关键字constexpr26

3.1.9 崭新的Template特性26

3.1.10 Lambda28

3.1.11 关键字decltype32

3.1.12 新的函数声明语法(New Function Declaration Syntax)32

3.1.13 带领域的(Scoped)Enumeration32

3.1.14 新的基础类型(New Fundamental Data Type)33

3.2 虽旧犹新的语言特性33

3.2.1 基础类型的明确初始化(Explicit Initialization for Fundamental Type)37

3.2.2 main()定义式37

4 一般概念39

4.1 命名空间(Namespace)std39

4.2 头文件(Header File)40

4.3 差错和异常(Error and Exception)的处理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和Tuple60

5.1.1 Pair60

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_ptr76

5.2.2 Class weak_ptr84

5.2.3 误用Shared Pointer89

5.2.4 细究Shared Pointer和Weak Pointer92

5.2.5 Class unique_ptr98

5.2.6 细究Class unique_ptr110

5.2.7 Class auto_ptr113

5.2.8 Smart Pointer结语114

5.3 数值的极值(Numeric Limit)115

5.4 Type Trait和Type Utility122

5.4.1 Type Trait的目的122

5.4.2 细究Type Trait125

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 增补的“比较操作符”(Comparison Operator)138

5.6 Class ratio<>的编译期分数运算140

5.7 Clock和Timer143

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 with Timer)160

5.8 头文件<cstddef>、<cstdlib>和<cstring>161

5.8.1 <cstddef>内的各项定义161

5.8.2 <cstdlib>内的各种定义162

5.8.3 <cstring>中的定义式163

6 标准模板库165

6.1 STL组件(Component)165

6.2 容器(Container)167

6.2.1 序列式容器(Sequence Container)169

6.2.2 关联式容器(Associative Container)177

6.2.3 无序容器(Unordered Container)180

6.2.4 关联式数组(Associative Array)185

6.2.5 其他容器187

6.2.6 容器适配器(Container Adapter)188

6.3 迭代器(Iterator)188

6.3.1 关联式(Associative)及无序(Unordered)容器的更多实例193

6.3.2 迭代器种类(Iterator Category)198

6.4 算法(Algorithm)199

6.4.1 区间(Range)203

6.4.2 处理多重区间(Multiple Ranges)207

6.5 迭代器之适配器(Iterator Adapter)210

6.5.1 Insert Iterator(安插型迭代器)210

6.5.2 Stream Iterator(串流迭代器)212

6.5.3 Reverse Iterator(反向迭代器)214

6.5.4 Move Iterator(搬移迭代器)216

6.6 用户自定义的泛型函数(User-DefinedGenericFunction)216

6.7 更易型算法(Manipulating Algorithm)217

6.7.1 移除(Removing)元素218

6.7.2 更易Associative(关联式)和Unordered(无序)容器221

6.7.3 算法vs.成员函数223

6.8 以函数作为算法的实参224

6.8.1 以函数作为算法实参的实例示范224

6.8.2 判断式(Predicate)226

6.9 使用Lambda229

6.10 函数对象(Function Object)233

6.10.1 定义一个函数对象233

6.10.2 预定义的函数对象239

6.10.3 Binder241

6.10.4 函数对象vs.Lambda243

6.11 容器内的元素244

6.11.1 容器元素的必要条件244

6.11.2 Value语义vs.Reference语义245

6.12 STL内部的错误和异常245

6.12.1 错误处理(Error Handling)246

6.12.2 异常处理(Exception Handling)248

6.13 扩展STL250

6.13.1 整合更多Type250

6.13.2 派生自STL Type251

7 STL容器253

7.1 容器的共通能力和共通操作254

7.1.1 容器的共通能力254

7.1.2 容器的共通操作254

7.1.3 容器提供的类型260

7.2 Array261

7.2.1 Array的能力261

7.2.2 Array的操作263

7.2.3 把array当成C-Style Array267

7.2.4 异常处理(Exception Handling)268

7.2.5 Tuple接口268

7.2.6 Array运用实例268

7.3 Vector270

7.3.1 Vector的能力270

7.3.2 Vector的操作273

7.3.3 将Vector当作C-Style Array使用278

7.3.4 异常处理(Exception Handling)278

7.3.5 Vector使用实例279

7.3.6 Class vector<bool>281

7.4 Deque283

7.4.1 Deque的能力284

7.4.2 Deque的操作函数285

7.4.3 Exception Handling288

7.4.4 Deque运用实例288

7.5 List290

7.5.1 List的能力290

7.5.2 List的操作291

7.5.3 异常处理(Exception Handling)296

7.5.4 List运用实例298

7.6 Forward List300

7.6.1 Forward List的能力300

7.6.2 Forward List的操作302

7.6.3 异常处理(Exception Handling)311

7.6.4 Forward List运用实例312

7.7 Set和Multiset314

7.7.1 Set和Multiset的能力315

7.7.2 Set和Multiset的操作函数316

7.7.3 异常处理(Exception Handling)325

7.7.4 Set和Multiset运用实例325

7.7.5 运行期指定排序准则328

7.8 Map和Multimap331

7.8.1 Map和Multimap的能力332

7.8.2 Map和Multimap的操作函数333

7.8.3 将Map视为关联式数组(Associative Array)343

7.8.4 异常处理(Exception Handling)345

7.8.5 Map和Multimap运用实例345

7.8.6 综合实例:运用Map、String并于运行期指定排序准则351

7.9 无序容器(Unordered Container)355

7.9.1 Unordered容器的能力357

7.9.2 创建和控制Unordered容器359

7.9.3 Unordered容器的其他操作367

7.9.4 Bucket接口374

7.9.5 使用Unordered Map作为Associative Array374

7.9.6 异常处理(Exception Handling)375

7.9.7 Unordered容器的运用实例375

7.10 其他STL容器385

7.10.1 String作为一种STL容器385

7.10.2 C-Style Array作为一种STL容器386

7.11 实现Reference语义388

7.12 各种容器的使用时机392

8 细探STL容器成员397

8.1 容器内的类型397

8.2 创建、复制和销毁(Create,Copy,and Destroy)400

8.3 非更易型操作(Nonmodifying Operation)403

8.3.1 大小相关操作(Size Operation)403

8.3.2 元素比较(Comparison Operation)404

8.3.3 Associative和Unordered容器特有的非更易型操作404

8.4 赋值(Assignment)406

8.5 元素直接访问(Direct Element Access)408

8.6 “产出迭代器”之各项操作410

8.7 安插和移除(Inserting and Removing)元素411

8.7.1 安插单一元素(Inserting Single Element)411

8.7.2 安插多重元素(Inserting Multiple Elements)416

8.7.3 移除元素(Removing Element)417

8.7.4 重设大小(Resizing)420

8.8 List和Forward List的特殊成员函数420

8.8.1 特殊成员函数(针对List和Forward List)420

8.8.2 特殊成员函数(只针对Forward List)423

8.9 容器的策略接口(Policy Interface)427

8.9.1 非更易型策略函数(Nonmodifying Policy Function)427

8.9.2 更易型策略函数(Modifying Policy Function)428

8.9.3 Unordered容器的Bucket相关接口429

8.10 对分配器(Allocator)的支持430

8.10.1 基本的分配器成员(Fundamental Allocator Member)430

8.10.2 带有“可选之分配器参数”的构造函数430

9 STL迭代器433

9.1 迭代器头文件(Header Files for Iterators)433

9.2 迭代器种类(Iterator Category)433

9.2.1 Output迭代器433

9.2.2 Input迭代器435

9.2.3 Forward(前向)迭代器436

9.2.4 Bidirectional(双向)迭代器437

9.2.5 Random-Access(随机访问)迭代器438

9.2.6 Vector迭代器的递增(Increment)和递减(Decrement)440

9.3 迭代器相关辅助函数441

9.3.1 advance()441

9.3.2 next()和prev()443

9.3.3 distance()445

9.3.4 iter_swap()446

9.4 迭代器适配器(Iterator Adapter)448

9.4.1 Reverse(反向)迭代器448

9.4.2 Insert(安插型)迭代器454

9.4.3 Stream(串流)迭代器460

9.4.4 Move(搬移)迭代器466

9.5 Iterator Trait(迭代器特性)466

9.5.1 为迭代器编写泛型函数(Generic Function)468

9.6 用户自定义(User-Defined)迭代器471

10 STL函数对象及Lambda475

10.1 Function Object(函数对象)的概念475

10.1.1 以Function Object为排序准则(Sorting Criterion)476

10.1.2 Function Object拥有内部状态(Internal State)478

10.1.3 for_each()的返回值482

10.1.4 Predicate(判断式)vs.Function Object(函数对象)483

10.2 预定义的Function Object和Binder486

10.2.1 预定义的Function Object486

10.2.2 Function Adapter和Binder487

10.2.3 以Function Adapter搭配用户自定义的Function Object495

10.2.4 过时的(Deprecated)Function Adapter497

10.3 运用Lambda499

10.3.1 Lambda vs. Binder499

10.3.2 Lambda vs.带有状态的(Stateful)Function Object500

10.3.3 Lambda调用全局函数和成员函数502

10.3.4 Lambda作为Hash函数、排序准则或相等准则504

11 STL算法505

11.1 算法头文件(Header File)505

11.2 算法概观505

11.2.1 扼要介绍506

11.2.2 算法分门别类506

11.3 辅助函数517

11.4 for_each()算法519

11.5 非更易型算法(Nonmodifying Algorithm)524

11.5.1 元素计数524

11.5.2 最小值和最大值525

11.5.3 查找元素(Searching Element)528

11.5.4 区间的比较542

11.5.5 Predicate用以检验区间550

11.6 更易型算法(Modifying Algorithm)557

11.6.1 复制元素(Copying Element)557

11.6.2 搬移元素(Moving Element)561

11.6.3 转换和结合元素(Transforming and Combining Element)563

11.6.4 互换元素(Swapping Elements)566

11.6.5 赋值(Assigning New Value)568

11.6.6 替换元素(Replacing Element)571

11.7 移除型算法(Removing Algorithm)575

11.7.1 移除某些元素575

11.7.2 移除重复元素578

11.8 变序型算法(Mutating Algorithm)583

11.8.1 反转元素次序(ReversingtheOrderofElements)583

11.8.2 旋转元素(Rotating Elements)584

11.8.3 排列元素(Permuting Elements)587

11.8.4 对元素重新洗牌(Shuffling Elements)589

11.8.5 将元素向前搬(MovingElementstotheFront)592

11.8.6 划分为两个子区间(PartitionintoTwoSubranges)594

11.9 排序算法(Sorting Algorithm)596

11.9.1 对所有元素排序596

11.9.2 局部排序(Partial Sorting)599

11.9.3 根据第n个元素排序602

11.9.4 Heap算法604

11.10 已排序区间算法(Sorted-Range Algorithm)608

11.10.1 查找元素(Searching Element)608

11.10.2 合并元素(Merging Elements)614

11.11 数值算法(Numeric Algorithm)623

11.11.1 运算后产生结果623

11.11.2 相对数列和绝对数列之间的转换627

12 特殊容器631

12.1 Stack(堆栈)632

12.1.1 核心接口633

12.1.2 Stack运用实例633

12.1.3 一个用户自定义的Stack Class635

12.1.4 细究Class stack<>637

12.2 Queue(队列)638

12.2.1 核心接口639

12.2.2 Queue运用实例640

12.2.3 一个用户自定义的Queue Class641

12.2.4 细究Class queue<>641

12.3 Priority Queue(带优先级的队列)641

12.3.1 核心接口643

12.3.2 Priority Queue运用实例643

12.3.3 细究Class priority_queue<>644

12.4 细究Container Adapter645

12.4.1 类型定义645

12.4.2 构造函数(Constructor)646

12.4.3 Priority Queue额外提供的构造函数646

12.4.4 各项操作(Operation)647

12.5 Bitset650

12.5.1 Bitset运用实例651

12.5.2 细究Class bitset653

13 字符串655

13.1 String Class的目的656

13.1.1 例一:提炼临时文件名656

13.1.2 例二:提炼单词并反向打印660

13.2 String Class细节描述663

13.2.1 String的各种相关类型663

13.2.2 操作函数概览666

13.2.3 构造函数和析构函数(ConstructorandDestructor)667

13.2.4 String和C-String668

13.2.5 大小和容量(Size and Capacity)669

13.2.6 元素访问(Element Access)671

13.2.7 比较(Comparison)672

13.2.8 更改内容(Modifier)673

13.2.9 子字符串(Substring)及字符串接合(String Concatenation)676

13.2.10 I/O操作符677

13.2.11 搜索和查找(Searching and Finding)678

13.2.12 npos的意义680

13.2.13 数值转换(Numeric Conversion)681

13.2.14 String对迭代器的支持684

13.2.15 国际化(Internationalization)689

13.2.16 效率(Performance)692

13.2.17 String和Vector692

13.3 细究String Class693

13.3.1 类型定义和静态值693

13.3.2 创建、复制、销毁(Create,Copy,and Destroy)694

13.3.3 大小和容量(Size and Capacity)696

13.3.4 比较(Comparison)697

13.3.5 字符访问699

13.3.6 产生C-String和字符数组(Character Array)700

13.3.7 “改动”之相关操作(Modifying Operation)700

13.3.8 查找(Searching and Finding)708

13.3.9 子字符串(Substring)及字符串接合(String Concatenation)711

13.3.10 I/O函数712

13.3.11 数值转换(Numeric Conversion)713

13.3.12 生成Iterator714

13.3.13 对Allocator的支持715

14 正则表达式717

14.1 Regex的匹配和查找接口(Match and Search Interface)717

14.2 处理“次表达式”(Subexpression)720

14.3 Regex Iterator726

14.4 Regex Token Iterator727

14.5 用于替换的正则表达式730

14.6 Regex Flag732

14.7 Regex的异常(Exception)735

14.8 Regex ECMAScript文法738

14.9 其他文法739

14.10 细究Basic Regex签名式740

15 以Stream完成I/O743

15.1 I/O Stream的共通基础744

15.1.1 Stream对象744

15.1.2 Stream Class744

15.1.3 全局的Stream对象745

15.1.4 Stream操作符745

15.1.5 操控器(Manipulator)746

15.1.6 一个简单例子746

15.2 基本Stream Class和其对象748

15.2.1 Class及其层次体系748

15.2.2 全局性的Stream对象751

15.2.3 头文件752

15.3 标准的Stream操作符<<和>>753

15.3.1 Output操作符<<753

15.3.2 Input操作符>>754

15.3.3 特殊类型的I/O755

15.4 Stream的状态(State)758

15.4.1 表示“Stream状态”的常量758

15.4.2 用来“处理Stream状态”的成员函数759

15.4.3 Stream状态与Boolean条件测试760

15.4.4 Stream的状态和异常762

15.5 标准I/O函数767

15.5.1 Input相关函数768

15.5.2 Output相关函数771

15.5.3 实例772

15.5.4 sentry对象772

15.6 操控器(Manipulator)774

15.6.1 操控器概览774

15.6.2 操控器如何运作776

15.6.3 用户自定义的操控器777

15.7 格式化(Formatting)779

15.7.1 Format Flag(格式标志)779

15.7.2 Boolean的I/O格式781

15.7.3 栏位宽度、填充字符、位置调整781

15.7.4 正号与大写784

15.7.5 数值基数(Numeric Base)785

15.7.6 浮点数(Floating-Point)表示法787

15.7.7 一般格式(General Formatting)定义789

15.8 国际化(Internationalization)790

15.9 文件访问(File Access)791

15.9.1 File Stream Class791

15.9.2 File Stream的Rvalue和Move语义795

15.9.3 File Flag(文件标志)796

15.9.4 随机访问(Random Access)799

15.9.5 使用文件描述器(File Descriptor)801

15.10 为String而设计的Stream Class802

15.10.1 String Stream Class802

15.10.2 String Stream的Move语义806

15.10.3 char Stream Class807

15.11 “用户自定义类型”之I/O操作符810

15.11.1 实现一个Output操作符810

15.11.2 实现一个Input操作符812

15.11.3 以辅助函数完成I/O814

15.11.4 用户自定义之Format Flag(格式标志)815

15.11.5 用户自定义I/O操作符的规约(Convention)818

15.12 连接Input和Output Stream819

15.12.1 以tie()完成松耦合(Loose Coupling)819

15.12.2 以Stream缓冲区完成紧耦合(Tight Coupling)820

15.12.3 将标准Stream重定向(Redirecting)822

15.12.4 可读可写的Stream824

15.13 Stream Buffer Class826

15.13.1 Stream缓冲区接口826

15.13.2 Stream缓冲区的Iterator828

15.13.3 用户自定义之Stream缓冲区832

15.14 关于效能(Performance)844

15.14.1 与C标准串流同步(Synchronization with C's Standard Streams)845

15.14.2 Stream缓冲区内的缓冲机制845

15.14.3 直接使用Stream缓冲区846

16 国际化849

16.1 字符编码和字符集850

16.1.1 多字节(Multibyte)和宽字符(Wide-Character)文本850

16.1.2 不同的字符集851

16.1.3 在C++中处理字符集852

16.1.4 Character Trait853

16.1.5 特殊字符的国际化857

16.2 Locale(地域)概念857

16.2.1 使用Locale858

16.2.2 Locale Facet864

16.3 细究Locale866

16.4 细究Facet869

16.4.1 数值格式化(Numeric Formatting)870

16.4.2 货币符号格式化(Monetary Formatting)874

16.4.3 时间和日期格式化(Time and Date Formatting)884

16.4.4 字符的分类和转换891

16.4.5 字符串校勘(String Collation)904

16.4.6 消息国际化(Internationalized Message)905

17 数值907

17.1 随机数及分布(Random Number and Distribution)907

17.1.1 第一个例子908

17.1.2 引擎(Engine)912

17.1.3 细说引擎(Engine)915

17.1.4 分布(Distribution)917

17.1.5 细说分布(Distribution)921

17.2 复数(Complex Number)925

17.2.1 Class complex<>一般性质925

17.2.2 Class complex<>运用实例926

17.2.3 复数的各项操作928

17.2.4 细说Class complex<>935

17.3 全局数值函数(Global Numeric Function)941

17.4 Valarray943

18 并发945

18.1 高级接口:async()和Future946

18.1.1 async()和Future的第一个用例946

18.1.2 实例:等待两个Task955

18.1.3 Shared Future960

18.2 低层接口:Thread和Promise964

18.2.1 Class std∷thread964

18.2.2 Promise969

18.2.3 Class packaged_task<>972

18.3 细说启动线程(Starting a Thread)973

18.3.1 细说async()974

18.3.2 细说Future975

18.3.3 细说Shared Future976

18.3.4 细说Class std∷promise977

18.3.5 细说Class std∷packaged_task977

18.3.6 细说Class std∷thread979

18.3.7 Namespace this_thread981

18.4 线程同步化与Concurrency(并发)问题982

18.4.1 当心Concurrency(并发)982

18.4.2 Concurrent Data Access为什么造成问题983

18.4.3 什么情况下可能出错983

18.4.4 解决问题所需要的性质(Feature)987

18.5 Mutex和Lock989

18.5.1 使用Mutex和Lock989

18.5.2 细说Mutex和Lock998

18.5.3 只调用一次1000

18.6 Condition Variable(条件变量)1003

18.6.1 Condition Variable(条件变量)的意图1003

18.6.2 Condition Variable(条件变量)的第一个完整例子1004

18.6.3 使用Condition Variable(条件变量)实现多线程Queue1006

18.6.4 细说Condition Variable(条件变量)1009

18.7 Atomic1012

18.7.1 Atomic用例1012

18.7.2 细说Atomic及其高级接口1016

18.7.3 Atomic的C-Style接口1019

18.7.4 Atomic的低层接口1019

19 分配器1023

19.1 以应用程序开发者的角度使用Allocator1023

19.2 用户自定义的Allocator1024

19.3 以程序库开发者的角度使用Allocator1026

参考书目1031

新闻组及论坛(Newsgroup and Forum)1031

书籍和网站1032

索引1037

热门推荐