君子藏器于身,待时而动。
--《周易》
:

C++标准程序库

C++标准程序库

作者: [德] Nicolai M. Josut

出版社: 华中科技大学出版社

出版时间: 2002-9

价格: 108.00元

ISBN: 9787560927824

扫码右侧二维码

作者简介:

Nicolai M.Josuttis,著有《C++标准库》和《C++模板》,两书都由Addison-Wesley出版。他的职务是系统架构师和技术经理。最近两年,他在一家国际电话公司中全面推广SOA。Nicolai在几个会议上办过SOA讲座,多年来他一直在发表关于这个主题的演讲。 侯俊杰(1961年9月28日-),笔名侯捷,台湾知名电脑技术专栏作家,致力于电脑技术之扎根工作,文章兼具科技之长与灵性之美[1],有读者的评语是“比作家更工程师,比工程师更作家”。大同国中、师大附中、交通大学土木系毕业、清华大学动力机械研究所硕士。曾任职工研院机械所与电通所,曾在元智大学授课,近年来多从事两岸学术交流工作。他的妻子美静是一名钢琴师,侯俊杰说他自己“嗜咖啡。妻严不能常得。”

内容简介:

这本包含最新资料的完整书籍,反映出被ANSI/ISO C++语言标准规格书纳入的C++标准程序库的最新组成。更明确地说,这本书将焦点放在标准模板库身上,检验其中的容器、迭代器、仿函数和算法。读者还可以找到特殊容、字串、数值类别、国际化议题、IOStream。每一个元素都有深刻的呈现,包括其介绍、设计、运用实例、细部解说、陷阱、意想不到的危险,以及相关类别和函数的精确樯记式和定义式。

目录:

目录 侯捷译序a 孟岩译序g 目录(contents) v 前言(preface) xvii 致谢(acknowledgments) xix 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 沿革7 2.2 新的语言特性9 2.2.1 templates(模板) 9 2.2.2 基本型别的显式初始化(explicit initialization) 14 2.2.3 异常处理(exception handling) 15 .2.2.4 命名空间(namespaces) 16 2.2.5 bool型别18 2.2.6 关键词explicit 18 2.2.7 新的型别转换操作符(type conversion operators) 19 2.2.8 常数静态成员(constant static members)的初始化20 2.2.9 main() 的定义21 2.3 复杂度和big-o 表示法21 3 一般概念(general concepts) 23 3.1 命名空间(namespace)std 23 3.2 头文件(header files) 24 3.3 错误(error)处理和异常(exception)处理25 3.3.1 标准异常类别(standard exception classes) 25 3.3.2 异常类别(exception classes)的成员28 3.3.3 抛出标准异常29 3.3.4 从标准异常类别(exception classes)中派生新的类别30 3.4 配置器(allocators) 31 4 通用工具(utilities) 33 4.1 pairs(对组) 33 4.1.1 便捷函数make_pair() 36 4.1.2 pair运用实例37 4.2 class auto_ptr 38 4.2.1 auto_ptr的发展动机38 4.2.2 auto_ptr拥有权(ownership)的转移40 4.2.3 auto_ptrs 做为成员之一44 4.2.4 auto_ptrs 的错误运用46 4.2.5 auto_ptr运用实例47 4.2.6 auto_ptr实作细目51 4.3 数值极限(numeric limits) 59 4.4 辅助函数66 4.4.1 挑选较小值和较大值66 4.4.2 两值互换67 4.5 辅助性的“比较操作符”(comparison operators) 69 4.6 头文件[cstddef] 和[cstdlib] 71 4.6.1 [cstddef] 内的各种定义71 4.6.2 [cstdlib] 内的各种定义71 5 standard template library(标准模板库) 73 5.1 stl 组件(stl components) 73 5.2 容器(containers) 75 5.2.1 序列式容器(sequence containers) 76 5.2.2 关联式容器(associative containers) 81 5.2.3 容器配接器(container adapters) 82 5.3 迭代器(iterators) 83 5.3.1 关联式容器的运用实例86 5.3.2 迭代器类型(iterator categories) 93 5.4 算法(algorithms) 94 5.4.1 区间(ranges) 97 5.4.2 处理多个区间101 5.5 迭代器之配接器(iterator adapters) 104 5.5.1 insert iterators(安插型迭代器) 104 5.5.2 stream iterators(串流迭代器) 107 5.5.3 reverse iterators(逆向迭代器) 109 5.6 更易型算法(manipulating algorithms) 111 5.6.1 移除(removing)元素111 5.6.2 更易型算法和关联式容器115 5.6.3 算法v.s. 成员函数116 5.7 使用者自定之泛型函数(user-defined generic functions) 117 5.8 以函数做为算法的参数119 5.8.1“以函数做为算法的参数”实例示范119 5.8.2 判断式(predicates) 121 5.9 仿函数(functors or function objects) 124 5.9.1 什么是仿函数124 5.9.2 预先定义的仿函数131 5.10 容器内的元素(container elements) 134 5.10.1 容器元素的条件134 5.10.2 value 语意vs. reference 语意135 5.11 stl内部的错误处理和异常处理136 5.11.1 错误处理(error handling) 137 5.11.2 异常处理(exception handling) 139 5.12 扩展stl 141 6 stl 容器(containers) 143 6.1 容器的共通能力和共通操作144 6.1.1 容器的共通能力144 6.1.2 容器的共通操作144 6.2 vectors 148 6.2.1 vectors 的能力148 6.2.2 vector 的操作函数150 6.2.3 将vectors 当做一般arrays 使用155 6.2.4 异常处理155 6.2.5 vectors 运用实例156 6.2.6 class vector[bool] 158 6.3 deques 160 6.3.1 deques 的能力161 6.3.2 deque 的操作函数162 6.3.3 异常处理(exception handling) 164 6.3.4 deques 运用实例164 6.4 lists 166 6.4.1 lists 的能力166 6.4.2 list 的操作函数167 6.4.3 异常处理(exception handling) 172 6.4.4 lists 运用实例172 6.5 sets和multisets 175 6.5.1 sets 和multisets 的能力176 6.5.2 set 和multiset 的操作177 6.5.3 异常处理(exception handling) 185 6.5.4 sets 和multisets 运用实例186 6.5.5 执行期指定排序准则(sorting criterion) 191 6.6 maps 和multimaps 194 6.6.1 maps 和multimaps 的能力195 6.6.2 map 和multimap 的操作函数196 6.6.3 将maps 视为关联式数组(associated arrays) 205 6.6.4 异常处理(exception handling) 207 6.6.5 maps 和multimaps 运用实例207 6.6.6 综合实例:运用maps, strings 并于执行期指定排序准则213 6.7 其它的stl容器217 6.7.1 strings 可被视为一种stl容器217 6.7.2 arrays 可被视为一种stl容器218 6.7.3 hash tables 221 6.8 动手实现reference 语意222 6.9 各种容器的运用时机226 6.10 细说容器内的型别和成员230 6.10.1 容器内的型别230 6.10.2 生成(create)、复制(copy)、销毁(destroy) 231 6.10.3“非变动性操作(nonmodifying operations) 233 6.10.4 赋值(指派, assignments) 236 6.10.5 直接元素存取237 6.10.6 “会产出迭代器”的各项操作239 6.10.7 元素的安插(inserting)和移除(removing) 240 6.10.8 lists 的特殊成员函数244 6.10.9 对配置器(allocator)的支持246 6.10.10 综观stl容器的异常处理248 7 stl 迭代器(iterators) 251 7.1 迭代器头文件251 7.2 迭代器类型(iterator categories) 251 7.2.1 input(输入)迭代器252 7.2.2 output(输出)迭代器253 7.2.3 forward(前向)迭代器254 7.2.4 bidirectional(双向)迭代器255 7.2.5 random access(随机存取)迭代器255 7.2.6 vector 迭代器的递增(increment)和递减(decrement) 258 7.3 迭代器相关辅助函数259 7.3.1 advance() 可令迭代器前进259 7.3.2 distance() 可处理迭代器之间的距离261 7.3.3 iter_swap() 可交换两个迭代器所指内容263 7.4 迭代器配接器(iterator adapters) 264 7.4.1 reverse(逆向)迭代器264 7.4.2 insert(安插型)迭代器271 7.4.3 stream(串流)迭代器277 7.5 迭代器特性(iterator traits) 283 7.5.1 为迭代器编写泛型函数(generic functions) 285 7.5.2 使用者自定(user-defined)的迭代器288 8 stl 仿函数(functors or function objects) 293 8.1 仿函数的概念293 8.1.1 仿函数可当做排序准则(sort criteria) 294 8.1.2 仿函数可拥有自己的内部状态(internal state) 296 8.1.3 for_each() 的回返值300 8.1.4 判断式(predicates)和仿函数(functors) 302 8.2 预定义的仿函数305 8.2.1 函数配接器(function adapters) 306 8.2.2 针对成员函数而设计的函数配接器307 8.2.3 针对一般函数(非成员函数)而设计的函数配接器309 8.2.4 让自定仿函数也可以使用函数配接器310 8.3 辅助用(组合型)仿函数313 8.3.1 一元组合函数配接器(unary compose function object adapters) 314 8.3.2 二元组合函数配接器(binary compose function object adapters) 318 9 stl 算法(algorithms) 321 9.1 算法头文件(header files) 321 9.2 算法概观322 9.2.1 简介322 9.2.2 算法分门别类323 9.3 辅助函数332 9.4 for_each() 算法334 9.5 非变动性算法(nonmodifying algorithms) 338 9.5.1 计算元素个数338 9.5.2 求最大值和最小值339 9.5.3 搜寻元素341 9.5.4 区间的比较356 9.6 变动性算法(modifying algorithms) 363 9.6.1 复制(copying)元素363 9.6.2 转换(transforming)和结合(combining)元素366 9.6.3 互换(swapping)元素内容370 9.6.4 赋予(assigning)新值372 9.6.5 替换(replacing)元素375 9.7 移除性算法(removing algorithms) 378 9.7.1 移除某些特定元素378 9.7.2 移除重复元素381 9.8 变序性算法(mutating algorithms) 386 9.8.1 逆转(reversing)元素次序386 9.8.2 旋转(rotating)元素次序388 9.8.3 排列(permuting)元素391 9.8.4 重排元素(shuffling, 搅乱次序) 393 9.8.5 将元素向前搬移395 9.9 排序算法(sorting algorithms) 397 9.9.1 对所有元素排序397 9.9.2 局部排序(partial sorting) 400 9.9.3 根据第n 个元素排序404 9.9.4 heap 算法406 9.10 已序区间算法(sorted range algorithms) 409 9.10.1 搜寻元素(searching) 410 9.10.2 合并元素(merging) 416 9.11 数值算法(numeric algorithms) 425 9.11.1 加工运算后产生结果425 9.11.2 相对值和绝对值之间的转换429 10 特殊容器(special containers) 435 10.1 stacks(堆栈) 435 10.1.1 核心界面436 10.1.2 stacks 运用实例437 10.1.3 class stack[] 细部讨论438 10.1.4 一个使用者自定的stack class 441 10.2 queues(队列) 444 10.2.1 核心界面445 10.2.2 queues 运用实例446 10.2.3 class queue[] 细部讨论447 10.2.4 一个使用者自定的queue class 450 10.3 priority queues(优先队列) 453 10.3.1 核心界面455 10.3.2 priority queues 运用实例455 10.3.3 class priority_queue[] 细部讨论456 10.4 bitsets 460 10.4.1 bitsets 运用实例460 10.4.2 class bitset 细部讨论463 11 strings(字符串) 471 11.1 动机471 11.1.1 例一:引出一个临时文件名 472 11.1.2 例二:引出一段文字并逆向打印476 11.2 string classes 细部描述479 11.2.1 string 的各种相关型别479 11.2.2 操作函数(operations)综览481 11.2.3 建构式和解构式(constructors and destructors) 483 11.2.4 strings 和c-strings 484 11.2.5 大小(size)和容量(capacity) 485 11.2.6 元素存取(element access) 487 11.2.7 比较(comparisons) 488 11.2.8 更改内容(modifiers) 489 11.2.9 子字符串及字符串接合492 11.2.10 i/o 操作符492 11.2.11 搜寻和查找(searching and finding) 493 11.2.12 数值npos 的意义495 11.2.13 strings 对迭代器的支援497 11.2.14 国际化(internationalization) 503 11.2.15 效率(performance) 506 11.2.16 strings 和vectors 506 11.3 细说string class 507 11.3.1 内部的型别定义和静态值507 11.3.2 生成(create)、拷贝(copy)、销毁(destroy) 508 11.3.3 大小(size)和容量(capacity) 510 11.3.4 比较(comparisons) 511 11.3.5 字符存取(character access) 512 11.3.6 产生c-strings 和字符数组(character arrays) 513 11.3.7 更改内容514 11.3.8 搜寻(searching and finding) 520 11.3.9 子字符串及字符串接合524 11.3.10 i/o 函数524 11.3.11 产生迭代器525 11.3.12 对配置器(allocator)的支持526 12 数值(numerics) 529 12.1 复数(complex numbers) 529 12.1.1 class complex运用实例530 12.1.2 复数的各种操作533 12.1.3 class complex[] 细部讨论541 12.2 valarrays 547 12.2.1 认识valarrays 547 12.2.2 valarray 的子集(subsets) 553 12.2.3 class valarray 细部讨论569 12.2.4 valarray子集类别(subset classes)细部讨论575 12.3 全域性的数值函数581 13 以stream classes完成输入和输出583 13.1 i/o streams 基本概念584 13.1.1 stream物件584 13.1.2 stream类别584 13.1.3 全域性的stream物件585 13.1.4 stream操作符586 13.1.5 操控器(manipulators) 586 13.1.6 一个简单的例子587 13.2 基本的stream类别和stream对象588 13.2.1 相关类别及其阶层体系588 13.2.2 全域性的stream物件591 13.2.3 头文件(headers) 592 13.3 标准的stream操作符[[ 和]] 593 13.3.1 output操作符[[ 593 13.3.2 input操作符]] 594 13.3.3 特殊型别的i/o 595 13.4 streams 的状态(state) 597 13.4.1 用来表示streams 状态的一些常数597 13.4.2 用来处理streams 状态的一些成员函数598 13.4.3 stream状态与布尔条件测试600 13.4.4 stream的状态和异常602 13.5 标准i/o 函数607 13.5.1 输入用的成员函数607 13.5.2 输出用的成员函数610 13.5.3 运用实例611 13.6 操控器(manipulators) 612 13.6.1 操控器如何运作612 13.6.2 使用者自定操控器614 13.7 格式化(formatting) 615 13.7.1 格式标志(format flags) 615 13.7.2 布尔值(boolean values)的i/o 格式617 13.7.3 字段宽度、填充字符、位置调整618 13.7.4 正记号与大写字620 13.7.5 数值进制(numeric base) 621 13.7.6 浮点数(floating-point)表示法623 13.7.7 一般性的格式定义625 13.8 国际化(internationalization) 625 13.9 文件存取(file access) 627 13.9.1 文件标志(file flags) 631 13.9.2 随机存取634 13.9.3 使用文件描述器(file descriptors) 637 13.10 连接input streams 和output streams 637 13.10.1 以tie()完成“松耦合”(loose coupling) 637 13.10.2 以stream缓冲区完成“紧耦合”(tight coupling) 638 13.10.3 将标准streams 重新导向(redirecting) 641 13.10.4 用于读写的streams 643 13.11 string stream classes 645 13.11.1 string stream classes 645 13.11.2 char* stream classes 649 13.12 “使用者自定型别”之i/o操作符652 13.12.1 实作一个output 操作符652 13.12.2 实作一个input 操作符654 13.12.3 以辅助函数完成i/o 656 13.12.4 以非格式化函数完成使用者自定的操作符658 13.12.5 使用者自定的格式标志(format flags) 659 13.12.6 使用者自定之i/o 操作符的数个依循惯例662 13.13 stream buffer classes 663 13.13.1 从使用者的角度看stream缓冲区663 13.13.2 stream缓冲区迭代器(buffer iterators) 665 13.13.3 使用者自定的stream 缓冲区668 13.14 关于效能(performance) 681 13.14.1 与c 标准输入输出流(standard streams)同步682 13.14.2 stream缓冲区内的缓冲机制682 13.14.3 直接使用stream缓冲区683 14 国际化(internationalization, i18n) 685 14.1 不同的字符编码(character encoding) 686 14.1.1 宽字符(wide-character)和多字节文本(multibyte text) 686 14.1.2 字符特性(character traits) 687 14.1.3 特殊字符国际化691 14.2 locales 的概念692 14.2.1 运用locales 693 14.2.2 locale facets 698 14.3 locales 细部讨论700 14.4 facets 细部讨论704 14.4.1 数值格式化705 14.4.2 时间和日期格式化708 14.4.3 货币符号格式化711 14.4.4 字符的分类和转换715 14.4.5 字符串校勘(string collation) 724 14.4.6 信息国际化725 15 空间配置器(allocators) 727 15.1 应用程序开发者如何使用配置器727 15.2 程序库开发者如何使用配置器728 15.3 c++ 标准程序库的预设配置器732 15.4 使用者自行定义的配置器735 15.5 配置器细部讨论737 15.5.1 内部定义的型别737 15.5.2 各项操作739 15.6“未初始化内存”之处理工具细部讨论740 网络上的资源(internet resources) 743 参考书目(bibliography) 745 索引(index) 747

相关推荐

追问
2024-12-22 9.1k
长安的荔枝
2024-12-22 4.5k

评论

2024-06-17 19:55:41
风舞轻阳发表
对于初学者来说,这本书提供了非常全面的C++标准程序库介绍。作者清晰易懂的写作风格使复杂的概念变得容易理解,丰富的代码示例进一步巩固了我的学习。虽然它在某些部分可能有点技术性,但对于渴望深入了解C++库的人来说,它绝对是一本宝贵的资源。
2024-06-17 19:55:41
知识之源发表
这本书以结构化的方式组织,将标准模板库分解成易于理解的模块。作者对算法、容器和仿函数的深入探讨为我提供了强大的基础。我特别欣赏它对常见陷阱和意外行为的警告,使我能够避免许多潜在的错误。
2024-06-17 19:55:41
编程炼金师发表
作为一名经验丰富的程序员,我发现这本书是复习和更新我对C++标准程序库知识的绝佳工具。作者对每个元素的详细分析和代码示例帮助我深入理解其功能和限制。对于希望提高C++技能的任何人,我强烈推荐这本书。
2024-06-17 19:55:41
代码精灵发表
这本书就像C++标准程序库的百科全书,包含了大量的信息。作者将复杂的主题分解成更小的部分,使用清晰简洁的语言进行解释。丰富的参考文献和索引使我能够轻松地找到我需要的特定信息。
2024-06-17 19:55:41
夜幕行者发表
这本书不仅是一本参考指南,更是一本学习指南。它遵循循序渐进的教学方法,从小处着手,逐渐深入到更高级的概念。对于想要从头开始学习C++标准程序库的人来说,这是一个理想的选择。
登录发表评论