第十部分C标准模板库本部分以自学为主教学课件.ppt
《第十部分C标准模板库本部分以自学为主教学课件.ppt》由会员分享,可在线阅读,更多相关《第十部分C标准模板库本部分以自学为主教学课件.ppt(28页珍藏版)》请在三一文库上搜索。
1、第十章 C+标准模板库 本章以自学为主,仲恺农业技术学院 计算科学系 胡小健,高级语言程序设计(C+),2,主要内容,泛型程序设计 与标准模板库有关的概念和术语 C+标准模板库中的容器 迭代器 标准C+库中的算法 函数对象,3,泛型程序设计,将程序写得尽可能通用 ,即:将算法从特定的数据结构中抽象出来,成为通用的(可针对各种数据类型) C+的模板为泛型程序设计奠定了关键的基础 STL是泛型程序设计的一个范例 容器(container) 迭代器(iterator) 算法(algorithms) 函数对象(function object),四个最关键的组件,4,本章重点,群体数据的类型多且处理复杂
2、。不过,不是所有的程序员都要从头开始自行设计所需要的类型及算法。 Standard Template Library是已有的经典优秀的模板,本章的重点是如何使用现有的STL。,重点理解本章例10-1至例10-15的所有例题,请自行学习,不明白的,要求查找MSDN(考试重点): ReferenceCC+Language and C+Libraries Standard C+Library Reference 或上网查找。 试卷中本章内容均是本章的例题及布置的练习(两道大题),,5,命名空间(Namespace)的引入,在缺省情况下,在全局域中声明的每个对象、函数、类型或模板都引入了一个全局实体(
3、global entity).在全局名字空间域引入的全局实体必须有唯一的名字。 例如:函数和对象不能有相同的名字,无论它们是否在同一程序文本文件中被声明。 如果程序中使用一个库,必须保证程序中的全局实体的名字不能与库中的全局实体名字冲突。如果程序是由许多厂商提供的库构成,则很难保证各种库会将许多名字引入到全局字空间域中。在组合不同厂商的库时,就怎样才能确保程序中的全局实体不会与这些库中声明的全局实体名冲突?名字冲突问题也被称为:全局名字空间污染(global namespace pollution) 程序员可以通过使用全局实体名字很长或在名字前加特殊的字符序列前缀,从而避免这些问题,但这样是个
4、累赘。 而名字空间正是解决此类问题而引入的一种机制。,6,命名空间(Namespace)的引入,库的作者可定义一个名字空间,从而库中的所有引入的实体都隐藏在该名字空间之中。如: namespace cplusplus_primer class matrix void inverse (matrix &) . 在一个名字空间中声明的实体如:函数,对象、类、类模板和类型声明等都被称为名字空间的成员(namespace member)。用户声明的名字空间中的每个名字必须是名字空间内的唯一实体。但不同用户声明的名字空间引入了不同的域,所以两个不同的名字空间可以有相同的名字成员。如: namespace
5、 DisneyFeatureAnimation class matrix . void inverse (matrix &). 在程序中我们可以用既定修饰名来使用名字空间的成员。,7,命名空间(Namespace)的引入,void func (DisneyFeatureAnimation:Matrix ,8,命名空间(Namespace),一个命名空间将不同的标识符集合在一个命名作用域(named scope)内 为了解决命名冲突 例如,声明一个命名空间NS: namspace NS class File; void Fun (); . . . . . . 则引用标识符的方式如下, NS: F
6、ile obj; NS: Fun (); 没有声明命名空间的标识符都处于无名的命名空间中,9,可以用using来指定命名空间 例如,经过以下声明: using NS:File; /或 using NS; /在当前作用域中就可以直接引用File using namespace std; 命名空间std中所有标识符都可直接引用 在新的C+标准程序库中,所有标识符都声明在命名空间std中,头文件都不使用扩展名,命名空间(Namespace),有关命名空间(Namespace) 详见C+ Primer,10,容器,容器类是容纳、包含一组元素或元素集合的对象。 异类容器类与同类容器类 顺序容器与关联容器
7、 七种基本容器: 向量(vector) 双端队列(deque) 列表(list) 集合(set) 多重集合(multiset) 映射(map) 多重映射(multimap),11,容器的接口,通用容器运算符 =,!=,=,=,= 方法(函数) 迭代方法 begin(),end(),rbegin(),rend() 访问方法 size(),max_size(),swap(),empty(),12,适配器,适配器是一种接口类 为已有的类提供新的接口。 目的是简化、约束、使之安全、隐藏或者改变被修改类提供的服务集合。 三种类型的适配器: 容器适配器 用来扩展7种基本容器,它们和顺序容器相结合构成栈、队
8、列和优先队列容器 迭代器适配器 函数对象适配器。,13,迭代器,迭代器是面向对象版本的指针,它们提供了访问容器、序列中每个元素的方法。,14,算法,C+标准模板库中包括70多个算法 其中包括查找算法,排序算法,消除算法,记数算法,比较算法,变换算法,置换算法和容器管理等等。 这些算法的一个最重要的特性就是它们的统一性,并且可以广泛用于不同的对象和内置的数据类型。 使用时必须指名模板参数。,15,顺序容器,顺序容器的接口: 插入方法 push_front(), push_back(), insert(), “=” 删除方法 pop() ,erase(),clear() 迭代访问方法 使用迭代器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十 部分 标准 模板 自学 为主 教学 课件
链接地址:https://www.31doc.com/p-2573279.html