思路:C++中已实现方法next和hasnext,主要实现peek方法,。使用flag标识迭代器是否有剩余元素,使用nextElement存储迭代器下一个元素。
class PeekingIterator : public Iterator {
public:
PeekingIterator(const vector& nums) : Iterator(nums) {
// Initialize any member here.
// **DO NOT** save a copy of nums and manipulate it directly.
// You should only use the Iterator interface methods.
flag = Iterator::hasNext();
if(flag)
nextElement = Iterator::next();
}
// Returns the next element in the iteration without advancing the iterator.
int peek() {
return nextElement;
}
// hasNext() and next() should behave the same as in the Iterator interface.
// Override them if needed.
int next() {
int ret = nextElement;
flag = Iterator::hasNext();
if(flag)
nextElement = Iterator::next();
return ret;
}
bool hasNext() const {
return flag;
}
bool flag;
int nextElement;
};



