文档详情

《高级语言C++程序设计(第一版)-第九章.》.pdf

发布:2016-01-03约字共15页下载文档
文本预览下载声明
9.1 一个队列模板 229 第九章 模板 (Template) 模板的概念是仅在C++语言的高版本中才引进的。模板(template )是一种 参数化的类型,在有模板概念之前,C++语言的程序员热衷于涉及“类属类” (Generic class ),其目标是为了实现程序代码的可重用性,通过“类属编程” 使得同一结构的不同实例共用同样的代码。这样的类属数据结构包括:栈,队 列,数组,矩阵,链表,二叉树,散列表和图等等。这项工作的意义是明显的, 这样的类库应用很广,可以节省代码,易于维护;当然,类属类的编程也十分 繁琐。 C++ (高版本)的模板支持类属编程,大大简化了类属数据结构的编程工 作。熟练地使用模板概念,是高级的C++程序员的必要条件之一。 类模板是一种带参类,或说是具有共性的一组类。模板增加了以类为特征 的程序模块的通用性。 例如,集合、矩阵、链表都可以设计成类。但是如果采用模板的形式,则 编程的效率更高。例如,集合类,根据集合类元素的不同类型,如int 型,char 型,float 型,point 型,complex 型等等,可以是系统类型,也可以是用户定义 类型。总之对于每一种元素类型,可以定义一个集合类。利用模板的形式,以 类型为参数,可以定义一个集合 (set )模板,每指定一种类型作为“实参”, 这个模板就成为一个特定的集合类。 函数模板也有类似的特征。 9.1一个队列模板 队列()和栈()都是特殊的线性数据结构,栈是只允许在表的一端对表 中的数据进行存取,而队列则是允许在表的一端存入而在另一端取出,即所谓 “先进先出”。这种数据结构在程序设计中经常被采用,队列中项的类型可以有 所不同,但队列的基本操作是一致的,因此可以把它设计为带有类型参数的模 板。 230 第九章 模板(Template) //program 9_1.cpp # includeiostream.h # includeprocess.h templateclass keytype class Queue{ int front,rear; keytype *queue; int Maxsize; public: Queue(int size){ Maxsize=size; queue=new keytype[Maxsize]; front=rear=- 1; }; //创建一新队列,最大尺寸为size int IsFull( ){ if(rear==Maxsize- 1) return 1; else return 0; }; int IsEmpty( ){ if(front==rear) return 1; else return 0; }; void Add(const keytype); keytype Delete(void); }; templateclass keytype void Queuekeytype::Add(const keytype item){ if(IsFull( )) 9.1 一个队列模板 231 coutThe queue is fullendl; else queue[++rear]=item;
显示全部
相似文档