附录C 基本类
本附录提供我们在一些模式的C + +示例代码中用到的基本类。我们力求使这些类尽量简
短。这些基本类包括:
• List,对象的顺序列表。
• Iterator,顺序存取聚集对象的接口。
• ListIterator,遍历一张L i s t的I t e r a t o r。
• Point,一个两维点。
• Rect,一个轴对齐的矩形。
在某些编译器中,一些新的C + +标准类型可能还未实现。特别地,如果你的编译器没有定
义b o o l类型,你可以象下面这样手工定义它:
C.1 List
L i s t模板类是一个用来存储一个对象序列的基本容器。L i s t存放元素的值,其元素既可以
是内置类型也可以是类的对象。例如, L i s t < i n t >声明了一个整数序列。但在大多数模式中使
用它来存储对象指针,比如L i s t < G l y p h * >。这样L i s t类就可以用于异质元素列表。
为方便使用, L i s t类也提供了栈形式的操作。这样就可以直接将L i s t用作栈,而无需再定
义新类。
下面较详细地讨论这些操作。
构造、析构、初始化和赋值
List(long size)
初始化列表。参数s i z e提示初始元素数目。
L i s t ( L i s t & )
重载缺省拷贝构造函数,以正确地初始化成员数据。
~L i s t ( )
释放该列表的内部数据结构的存储空间。但它并不释放其元素的数据。设计者不希望用
户继承这个类,因而析构函数不是虚的。
List& operator=(const List&)
实现列表赋值,以正确赋值各成员数据。
访问
这些操作支持对列表元素的基本存取。
long Count() const
返回列表中对象的数目。
Item& Get(long index) const
返回制定下标处的对象。
Item& First() const
返回列表的第一个对象。
Item& Last() const
返回列表的最后一个对象。
bool Includes(const Item&) const
列表是否含有给定元素。本操作要求列表元素类型支持用于比较的= =操作。
增添
void Append(const Item&)
在列表尾部添加元素。
void Prepend(const Item&)
在列表头部插入元素。
删除
void Remove(const Item&)
从列表中删除给定元素。本操作要求列表元素类型支持用于比较的= =操作。
void RemoveLast()
删除最后一个元素。
void RemoveFirst()
删除第一个元素。
void RemoveAll()
删除所有元素。
栈接口
Item& Top() const
返回栈顶元素(将列表视为一个栈)。
void Push(const Item&)
将该元素压入栈。
Item& Pop()
弹出栈顶元素。
C.2 Iterator
I t e r a t o r是定义了一种遍历对象集合的接口的抽象类。
其操作含义为:
virtual void First()
使本I t e r a t o r指向顺序集合中的第一个对象。
virtual void Next()
使本I t e r a t o r指向对象序列的下一个元素。
virtual bool IsDone() const
当序列中不再有未到达的对象时返回真。
virtual Item CurrentItem() const
返回序列中当前位置的对象。
C.3 ListIterator
L i s t I t e r a t o r实现了遍历列表的I t e r a t o r接口。它的构造函数以一个待遍历的列表为参数。
C.4 Point
P o i n t表示两维笛卡儿坐标空间上的一个点。P o i n t支持一些最基本的向量运算。P o i n t的坐
标值类型定义为:
typedef float Coord;
P o i n t的操作含义是自明的。
静态成员Z e r o代表P o i n t ( 0 , 0 )。
C.5 Rect
R e c t代表一个轴对齐的矩形。一个矩形用一个原点和一个范围(长度和宽度)来表示。
其操作含义也是自明的。
静态成员Z e r o等于矩形
Rect(point(0, 0)point(0, 0));