第十章 C++标准模板库本章以自学为主教案.pptVIP

第十章 C++标准模板库本章以自学为主教案.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 C++标准模板库 本章以自学为主 仲恺农业技术学院 计算科学系 胡小健 主要内容 泛型程序设计 与标准模板库有关的概念和术语 C++标准模板库中的容器 迭代器 标准C++库中的算法 函数对象 泛型程序设计 将程序写得尽可能通用 ,即:将算法从特定的数据结构中抽象出来,成为通用的(可针对各种数据类型) C++的模板为泛型程序设计奠定了关键的基础 STL是泛型程序设计的一个范例 容器(container) 迭代器(iterator) 算法(algorithms) 函数对象(function object) 本章重点 群体数据的类型多且处理复杂。不过,不是所有的程序员都要从头开始自行设计所需要的类型及算法。 Standard Template Library是已有的经典优秀的模板,本章的重点是如何使用现有的STL。 命名空间(Namespace)的引入 在缺省情况下,在全局域中声明的每个对象、函数、类型或模板都引入了一个全局实体(global entity).在全局名字空间域引入的全局实体必须有唯一的名字。 例如:函数和对象不能有相同的名字,无论它们是否在同一程序文本文件中被声明。 如果程序中使用一个库,必须保证程序中的全局实体的名字不能与库中的全局实体名字冲突。如果程序是由许多厂商提供的库构成,则很难保证各种库会将许多名字引入到全局字空间域中。在组合不同厂商的库时,就怎样才能确保程序中的全局实体不会与这些库中声明的全局实体名冲突?名字冲突问题也被称为:全局名字空间污染(global namespace pollution) 程序员可以通过使用全局实体名字很长或在名字前加特殊的字符序列前缀,从而避免这些问题,但这样是个累赘。 而名字空间正是解决此类问题而引入的一种机制。 命名空间(Namespace)的引入 库的作者可定义一个名字空间,从而库中的所有引入的实体都隐藏在该名字空间之中。如: namespace cplusplus_primer { class matrix {……} void inverse (matrix ) {….} } 在一个名字空间中声明的实体如:函数,对象、类、类模板和类型声明等都被称为名字空间的成员(namespace member)。用户声明的名字空间中的每个名字必须是名字空间内的唯一实体。但不同用户声明的名字空间引入了不同的域,所以两个不同的名字空间可以有相同的名字成员。如: namespace DisneyFeatureAnimation { class matrix {….} void inverse (matrix ){….} } 在程序中我们可以用既定修饰名来使用名字空间的成员。 命名空间(Namespace)的引入 void func (DisneyFeatureAnimation::Matrix m) { DisneyFeatrueAnimation::inverse(m); } void main () { cplusplus::Matrix m1; ….. } 如果: using namespace DisneyFeatureAnimation void main () { Matrix m1; cplusplus::Matrix m2; …….. } 命名空间(Namespace) 一个命名空间将不同的标识符集合在一个命名作用域(named scope)内 为了解决命名冲突 例如,声明一个命名空间NS: namspace NS { class File; void Fun (); . . . . . . } 则引用标识符的方式如下, NS:: File obj; NS:: Fun (); 没有声明命名空间的标识符都处于无名的命名空间中 命名空间(Namespace) 可以用using来指定命名空间 例如,经过以下声明: using NS::File; //或 using NS; //在当前作用域中就可以直接引用File using namespace std; 命名空间std中所有标识符都可直接引用 在新的C++标准程序库中,所有标识符都声明在命名空间std中,头文件都不使用扩展名 容器 容器类是容纳、包含一组元素或元素集合的对象。 异类容器类与同类容器类 顺序容器与关联容器 七种基本容器: 向量(vector) 双端队列(deque) 列表(list) 集合(set) 多重集合(multiset) 映射(map) 多重映射(multim

文档评论(0)

沃爱茜 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档