classIterator{structData;
Data* data;public:Iterator(const vector<int>& nums);Iterator(const Iterator& iter);// Returns the next element in the iteration.intnext();// Returns true if the iteration has more elements.boolhasNext()const;};classPeekingIterator:publicIterator{public:PeekingIterator(const vector<int>& nums):Iterator(nums){// 先看是不是存在下一个元素
exist =Iterator::hasNext();if(exist){
nextValue =Iterator::next();}}intpeek(){return nextValue;}intnext(){int tmp = nextValue;// 取出当前元素
exist =Iterator::hasNext();// 判断还有没有下一个元素if(exist){
nextValue =Iterator::next();//有的话就去取出}return tmp;}boolhasNext(){return exist;}private:int nextValue;bool exist;};