数据结构与算法、模板课程介绍.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 模板 案例分析 针对int、long、char三种类型创建函数来返回两个参数中较小的一个,如果不使用template,必须要编写一系列如下的函数: 然而,使用template,可以减少重复部分,形成一个函数: Page ? * 第四章 模板 模板的优点 模板具有以下几个优势: Page ? * 第四章 模板 应用场景 模板经常被用来实现如下功能: 创建一个类型安全的集合类(例如,堆栈)用来处理各种类型的数据; 为函数添加额外的类型检查以避免获得空指针; 合并操作符重载组来修改类型行为(例如智能指针); 实际上,大多数以上应用可以不用模板实现。 Page ? * 第四章 模板 模板的应用 模板通常有两种使用方式,也就是函数模板和类模板。 下面,我们就针对函数模板和类模板的使用进行学习。 Page ? * 函数模板 类模板 第四章 模板 函数模板 概念 使用函数模板,你可以指定一组基于相同代码但是处理不同类型或类的函数。 定义 模板关键自字为template,定义如图所示: 这段代码定义了一个函数家族来交换函数的参数值。从这个函数模板你可以产生一系列函数,不仅可以交换int、long,而且可以交换用户定义类型。 同样,前面案例中使用的也是函数模板。 Page ? * 第四章 模板 使用方法 函数模板可以阻止你交换不同类型的对象,因为编译器在编译时知道参数a和b的类型。 你可以像调用一个普通函数一样调用一个模板函数;不需要特殊的语法。例如: Page ? * 第四章 模板 实例分析 函数模板的实例参见: DataStructExample\DataStructExample\FunctionTemplateExample.cpp Page ? * 第四章 模板 类模板 概念 如同函数模板一样,类模板是参数化的类。类模板的模板参数可以应用于数据成员、成员函数的参数和返回值。 定义 定义如图所示: 这段代码定义了一个类的家族来交换成员 函数MySwap的参数值。从这个类模板你可以 产生一系列的类,可以支持int、long等多样化的数据类型。 Page ? * 第四章 模板 使用方法 与函数模板一样,你可以像调用一个普通类一样调用一个类模板,不需要特殊的语法。例如: Page ? * 第四章 模板 实例分析 类模板的实例参见: DataStructExample\DataStructExample\ClassTemplateExample.cpp Page ? * 函数模板和类模板 从前面的函数模板和类模板的实例中我们可以看出,二者的主要区别在于: 函数模板在使用时不需要程序员指定类型,编译器在编译的时候会自动绑定; 类模板需要程序员手工指定,指定的方式是:类名字类型。 第四章 模板 Page ? * 函数模板 第四章 模板 模板和集合类 模板是实现集合类的一个好方法。使用模板实现的常用集合类有以下几类: Page ? * 集合类 Ctyped PtrList Ctyped PtrMap Ctyped PtrArray CList CMap CArray …… 具体的使用方式在此就不作说明了,因为它们的用法和它们对应的基本类型的使用方式是类似的。 结束语 这是一门学科,培训是讲不完所有内容的。 有位同学生动地把这些基础课程比拟为“内功”,把新的语言、技术、标准比拟为“外功”。整天赶时髦的人最后只懂得招式,没有功力,是不可能成为高手的。必须内外兼备,日积月累,才能成为绝世高手。 Page ? * Page ? * 结束 第二章 常用数据结构 队列的应用 队列也应用广泛,比较常用的场景有: 1)操作系统资源分配 2)操作系统消息队列 Page ? * 第二章 常用数据结构 queue队列 queue用于模拟队列这种数据结构(先进先出 FIFO)。 queue在头文件queue中定义。 关键函数 Page ? * 函数 说明 queueT 构造队列对象 push() 将x元素接到队列的末端 pop() 弹出队列的第一个元素,并不会返回元素的值 empty() 判断栈是否为空,当栈空时返回true front() 访问队首元素 back() 访问队尾元素 size() 访问队中的元素个数 第二章 常用数据结构 实例分析 队列的使用实例参见: DataStructExample\DataStructExample\QueueExample.cpp Page ? * 第二章 常用数据结构 小结 数据结构是软件开发的基础,著名的类库皆是在这些规则的基础上经过封装而来。 掌握数据逻辑结构,了解各种存储结构,并在此基础上熟练使用各种类库,才能写出优秀代码。 Page ? *

文档评论(0)

武神赵子龙 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档