zoukankan      html  css  js  c++  java
  • 设计模式之 迭代器模式

    class Book
    {
    public:
        Book(void);
        ~Book(void);
    public:
        string name_;
        string Tag_;
    };
    
    class BookList
    {
    public:
        BookList(void);
        ~BookList(void);
    public:
        void addBook(const Book *pBook){ bookList_.push_back(pBook); }
        void delBook(const Book *pBook){}
        IIterator* createIterator(void){ return new Iterator(this, bookList_.size()); }
        Book* operator[](int index){ return bookList_[index]; }
    
    public:
        vector<Book*> bookList_;
    };
    
    template<class ItemT, class ValueTypeT>
    class IIterator
    {
    public:
        virtual ~IIterator(void){}
        virtual void first(void) = 0;
        virtual void next(void) = 0;
        virtual ValueTypeT* currentItem(void) = 0;
        virtual bool isDone(void) = 0;
    };
    
    template <class ItemT, class ValueTypeT>
    class ListIterator: public IIterator<ItemT, ValueTypeT>
    {
    public:
        ListIterator(const ItemT *pItem, int size): pItem_(pItem),size_(size),cur_(0){}
        ~ListIterator(void){}
    public:
        virtual void first(void){ cur_ = 0; }
        virtual void next(void){ ++cur_; }
        virtual ValueTypeT* currentItem(void){ return cur_ < size_ ? pItem[cur_] : NULL; }
        virtual bool isDone(void){ return cur_ >= size_ ? true : false; }
    
    private:
        ItemT *pItem_;
        int size_;
        int cur_;
    };
  • 相关阅读:
    BZOJ5308 ZJOI2018胖
    BZOJ5298 CQOI2018交错序列(动态规划+矩阵快速幂)
    423. Reconstruct Original Digits from English
    422. Valid Word Square
    277. Find the Celebrity
    419. Battleships in a Board
    414. Third Maximum Number
    413. Arithmetic Slices
    412. Fizz Buzz
    285. Inorder Successor in BST
  • 原文地址:https://www.cnblogs.com/foreverstars/p/4690116.html
Copyright © 2011-2022 走看看