作者:empty 页数:487 出版社:empty |
内容提要本书着重讨论了C++类和算法组件的各个方面。在每方面,除了介绍一些基础知识外,还提供了大量的示例程序,以指导读者学习使用功能强大的类库。需要集成Java程序和C++程序的Java程序员将在本书中找到标准C++类、类属性、类方法的完整描述和详细文档资料。本书条理清晰,语言简练,适用于初学者和高级程序设计人员。
C++是一种通用程序设计语言。它支持目前使用的3种最重要的程序设计方法:·参数化(生成式)程序设计方法。对以上3种程序设计方法的支持使得C++语言成为一种灵活、功能强大、完备的程序设计语言。任何对C++语言的讨论都分为两个部分:表达能力极强的内容广泛的语言和一个很大的可重用软件组件库。第二部分称为标准C++库,其中包含了大量的函数、对象、算法。本书将重点介绍标准C++库的两个重要的组件集合:尽管目前并不缺少介绍C++语言和如何使用C++语言编程的专业书籍,但是介绍标准C++库的书籍几乎没有,详细描述C++库的所有面向对象和参数化组件的书籍就更少了。一些书籍介绍了标准C++类的某些组件,例如,输入输出流类与标准模板库;另一些书籍仅仅是简单的概述。在写作本书时,还没有资料为程序员和软件开发人员提供关于ANSI/ISOC++类和算法的全面和综合的了解。本书将为程序员和软件开发人员提供关于最新ANSI/ISOC++标准的面向对象组件和算法的完整指导和参考。员提供了:language前言标准C++类和算法包含很广泛的内容。它为C++程序设计人面向对象的输入/输出方法,·对参数化(生成式)程序设计方法的支持。面向对象的异常处理方法。面向对象的软件国际化方法。面向对象的数据结构。
面向对象的存储模型。标准C++类和算法为软件开发人员提供了可靠的现成可用(易用)的软件组件。这些类为软件开发人员提供了字符串处理、异常处理、面向对象的数据输入与输出、运行类型管理、存储管理、数据管理、面向对象的大型计算支持、硬件管理、软件国际化等的面向对象设计方法。在本书中,我们将详细讨论标准C++类和算法组件,将对每个类的内部运行方式和每个类提供的服务做详细描述。本书还包含所有标准C++类的参考信息,每个类参考信息包括一个简单、易于理解的关于如何使用该类的描述以及相关的系统需求和性能问题。本书还可以作为C++标准类库中每个类和每个成员函数的完全参考手册,ANSI(美国国家标准化组织) 与ISO(国际标准化组织) 对C++语言已经接受并批准了一个标准。这意味着任何符合ANSI/ISO标准的C++语言执行器都支持本书所讨论的类和算法。这也意味着,读者可以开发单一一组软件组件,在本国和国际范围内都可以使用。C++语言类和算法的标准化使得C++程序员和软件开发人员可以在一个环境下设计C++语言组件而在另一个环境下编译该组件。例如, UNIX环境下的C++语言标准组件可以与Macintosh环境下的C++语言标准组件一起工作。在PC工作站环境下运行的C++语言标准组件也可以在大型计算机环境下运行。二、为什么标准C++类和算法如此重要健壮的、通用的、可预知组件三、本书的读者对象Sun公司Visual Workshop C++3.0Inprise(Borland) 5.0Inprise(Borland) C++Builder 3.0In pris c(Borland) C++Builder 4.0Microsoft Visual C++5.0Microsoft Visual C++6.0Portland Group的C++Workstation
对于软件开发人员,标准C++类和算法是非常重要的,因为它们已经经过测试。它们是健壮的软件组成单元,可以立即使用。在设计人型的面向对象的程序、类库、应用程序框架、大型软件系统时,标准的C++类和算法可以作为软件基础的组成块。标准C++算法的执行性能和效率已有文档记录。预先了解标准C++算法的执行效率和性能可以使开发人员在程序设计时对性能和效率进行综合的考虑。如果一个排序程序使用标准C++类和算法,我们可以精确地知道对一个大的对象列表排序时的运行时间,我们可以精确地知道在一个文件、列表或者是其他对象集合中查询个特定对象是否存在时的运行时间,因为标准组件支持参数化(生成式)程序设计方法,我们可以在解决一个问题后,把问题的解决方法应用于许多不同的环境。因此,C++标准类和算法可以提高程序设计人员的生产效率和软件的重用性能。简而言之,C++标准类和算法可以使程序设计人员的工作更加容易。木书提供了对标准C++类和算法的介绍,因此适用于初学者和高级程序设计人员。本书假设读者对C++程序设计语言已经有简单的了解,本书简单回顾了面向对象程序设计方法和参数化程序设计方法的基本概念,以便没有学习过这些知识或已经忘记这些知识的读者方便地学习本书。需要集成Java程序和C++程序的Java程序员将在本书中找到标准C++类、类属性、类方法的完整描述和详细文档资料。第十一章特别讨论了如何在C++类中访问Java类。需要学习如何把JVM(Java虚拟机)-2-嵌入C++程序的C++程序员会发现本书非常有帮助。并且,因为木书既可作为学习指导又可作为参考手册,专业的C++程序员将会发现在本书参考部分的类描述和成员函数的解释是大多数C++编译器的文档资料的一个很好的补充。面向对象应用程序框架和CORBA类的设计人员将会发现本书关于标准C++类的结构和接的讨论是非常及时的。
四、编译器环境本书中的例程和应用实例都用遵循ANSI/ISO标准的C++语言设计。因此, 任何支持新ANSI/ISO标准的C++执行器都能够对书中给出的例子进行编译。但是, 这并不表示本书对于那些没有最新的编译器环境的读者没有使用价值。值得注意的是,在写作本书时,没有一个编译器提供商100%地支持新的标准,因此,我们尽力使得示例代码能够在大多数商业C++执行器环境下编译执行。本书90%的示例代码可以直接或经过很少修改后在以下环境成功地编译:GNU C++2.7.2与2.8IBM公司的VisualAge 4.0我们测试过的一些编译器不支持数值数组类和模板化的输入输出流类。五、内容组织与示例代码1.C++类参考每一章内容包括讨论与例子。图与表用于帮助解释和组织比较复杂的论题。有些章节包含附属信息帮助读者更深入地理解算法、异常处理、容器类。读者可以跳过这些信息。示例代码设计简单,易于理解,我们的目的不是设计最优或高效率的代码,我们的目的是以直观的方式在示例代码中表达基本的概念,InternetExplorer 3.0或4.0浏览。随书光盘的电子文档中提供了C++类和算法的完整信息, 该文档可以使用Microsoft2.测试和代码可靠性本书中所有的例程和应用实例都经过了测试以确保正确,但是我们并不保证这些程序完全没有错误、符合任何特定的商业销售标准、满足用广特定的应用需求。作者和出版商郑重声明,对使用本书和随书光盘中包含的例程和应用实例造成的直接或间接的损失不承担任何责任。参加本书翻译的人员有:夏毅(前言,第一章),石畅(第二章,第七、八章),张海云(第三一六章,第九~十四章),全书由石畅进行总体协调。衷心感谢我们的编辑Marjorie Spencer和MargaretHendre y, 他们给予我们许多次重新开始和延期交稿的机会.衷心感谢IBM/Toronto的Isabelle Mau ny和Inprise的工作人员, 他们为本书程序的测试提供了非常高效的C++编译器。衷心感谢Raoul HewittⅢ教授为本书的德文版所作的翻译、校对和部分编程工作。最后, 感谢Youngstown州立大学的朋友和同事们, 他们允许我们带着笔记本计算机共进午餐。
第一章C++类库概述·1
第二章
C++标准类库:功能视图
1.1.1面向对象的输入输出
标准C++类库的结构视图·
容器类和ADT(抽象数据类型)
重要的新ADT(抽象数据类型)
存储管理类
什么是标准面向对象程序设计方法
通用性
面向对象的程序设计方法和生成式程序设计方法·
接视图
C++语言与标准软件设计(lego)
类的内部结构(Anatomy)
标准C++类库类
2.1.1具体类·
2.1.2抽象类
2.1.3接(适配子)类·
2.1.4节点类
2.1.5支持实用类
2.1.6
迭代子类s.
2.1.7分配器类
2.1.8参数化(模板)类
2.1.9领域类
2.1
2.2
属性(attribute) 、特性(characteristic) 和方法(method)
2.2.1私有方式63
2.2.2只有成员可以访问64
2.2.3对公共开放Eww64
2.3
小结64
第三章IO流(iostreams)67
3.1
类和IO流
3.1.1流状态组件·
3.1.2缓冲组件
3.1.3转换组件
流状态类ios_base T>和basic_ios T>
构造basic_ios(ios) 对象
打开(open) 模式
ios类的缓冲组件
ios类的缓冲状态组件
抽取转化(translation) 和换算(conversion)
岗哨(sentry) 对象及ip fx 00、is fx 0前缀和后缀方法
岗哨(sentry) 对象及op fx() 、os fx 0前缀和后缀方法
构造if stream对象
访问if stream类缓冲的方法
使用if stream对象
面向对象输出文件的of tre am类
构造of stream对象
访问of stream类缓冲的方法
类fstream=if stream+of stream
打开和关闭文件
写文本文件
读文本文件
写二进制文件
读二进制文件
对二进制文件进行对象的读写
类i stringstream(内存设备)
构造i stringstream对象
类ostringstream
类stringstream=i stringstream+ostringstream
控制器(manipulators) ·
3.10.1换行(new-line) 控制器endl.
3.10.2空(null) 控制器ends
3.10.3刷新流
3,10.4数字格式化控制器
3.10.5跳过空白这(whitespaces)
3.10.6标志控制器
3.10.7填补(padding) 和填充(fll) 控制器
4.1.1串的表示
4.1.2串类
4.2.1基本串类模板参数
4.2.2串类服务
4.2.3串对象的构造
4.2.4用子串构造串对象
4.2.5串分配
4.2.6访问串数据组件
4.2.7访问字符序列
4.2.8访问子串
4.2.9访问有关串对象的信息
4.2.10串对象的内存管理
缓冲类basic_streambuf, basic_filebuf, basic_string buf
转换类basic_istream和basic_ostream·
面向对象的输入输出
3.2.1抽取符(extractors)
3.2.2cout, wc out和inserters
IO流类层次结构
IO流类型定义(typedefs)
3.4.1basic_streambuf类
3.5最基本的基类ios_base
3.5.5ios类的格式状态(format state) 组件
一个面向对象的输入模型
3.6.1构造一个istream对象
3.6.2istream访问丽数:流抽取和对象转化
3.6.3抽取运算符·
3.6.4
3.6.5非格式化抽取·
3.6.6
一个面向对象的输出模式类basic_ostream
3.7.1一个ostream对象的构造
3.7.2插入运算符
3.7.3插入转化和换算
3.7.4basic_ostream类访问函数
3.7.5类iostream=basic_istream+basic_ostream
3.7.6
3.8类if stream
第五章
拷贝(copying) 和交换(swapping)
异常处理·
具体化(specializing) 异常类
动态强制转换(casting) 和bad_cast类
所有容器公用的通用方法和运算符
所有顺序容器公用的通用方法
所有联合容器公用的通用方法·
使用修改方法向向量放置对象
面向对象的队列、优先队列和双端队列
使用修改方法来向双端队列捕入对象
7.10.2标准联合容器的构造函数和析构函数
串类的