附录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));

|