阅读下列函数说明和C++代码,回答问题[说明] 对多个元素的聚合进行遍历访问时,需要依次推移元素,
阅读下列函数说明和C++代码,回答问题
[说明]
对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(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;
}
(1)Object virtual IteratorObject> &bookShelf it->hasNext()
当以调查、访问和回忆等口述资料为主要研究对象和依据的口述史学悄然兴起的今天,首先要考虑的问题是历史 历史 2020-05-17 …
寒假的时候,ACBOY要去拜访很多朋友,恰巧他所有朋友的家都处在坐标平面的X轴上.ACBOY可以任 其他 2020-05-20 …
寒假的时候,ACBOY要去拜访很多朋友,恰巧他所有朋友的家都处在坐标平面的X轴上.ACBOY可以任 其他 2020-05-20 …
阅读下列函数说明和C++代码,回答问题[说明] 对多个元素的聚合进行遍历访问时,需要依次推移元素, 计算机类考试 2020-05-26 …
阅读以下说明和Java代码,回答问题[说明] 对多个元素的聚合进行遍历访问时,需要依次推移元素,例如 计算机类考试 2020-05-26 …
访问控制是对信息系统资源进行保护的重要措施,适当的访问控制能够阻止未经授权的用户有意或者无意地获取资 计算机类考试 2020-05-26 …
英语翻译如这句话如何翻译:“日本学者来我国交流访问”,请一小时内尽快回复,关键是“交流访问”如何翻 其他 2020-07-07 …
孔子游春(采访问题)假如孔子、子路、颜回来到你面前,你是小记者,目睹了泗水河畔的这一幕,你最想采访谁 语文 2020-11-22 …
如果建立一个简单的图书类型电子商务网站,需要考虑的硬件软件因素有哪些访问当当网,根据课本第三章(电子 其他 2020-12-03 …
当以调查、访问和回忆等口述记录资料为主要研究对象和依据的口述史学悄然兴起的今天,首先要考虑的问题是历 历史 2020-12-28 …