找考题网-背景图
问答题

[说明]
对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookShelf)上并依次输出书名。这样就要涉及到遍历整个书架的过程。使用迭代器Iterator实现。图5-1显示了各个类间的关系。以下是C++语言实现,能够正确编译通过。
[图5-1]

[C++代码]
template (1) >
class Iterator
public:
virtual bool hasNext() = 0;
(2) Object* next() = 0;
;
class Book
//省略具体方法和属性
;
class BookShelf
private:
vector books;
public:
BookShelf()

Book* getBookAt(int index)
return &booksindex;

int getLength()
return books. size();

;
template
class BookshelfIterator : public (3)
private:
BookShelf * bookShelf;
int index;
public:
BookshelfIterator(BookShelf *bookShelf)
this->bookShelf = bookShelf;
index = 0;

bool hasNext()//判断是否还有下一个元素
if(index < bookShelf->getLength())
return true;
else
return false;


Objeot* next()//取得下一个元素
return bookShelf->getBookAt(index++);

;
int main()

BookShelf bookShelf;
//将书籍上架,省略代码
Book *book;
Iterator *it = new BookShelfIterator( (4) );
while( (5) )//遍历书架,输出书名
book=(Book*)it->next();
/*访问元素*/

return 0;

(3)处填()。

【参考答案】

Iterator<Object>