《高级语言C++程序设计(第一版)-第九章.》.pdf
文本预览下载声明
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;
显示全部