284. 顶端迭代器 力扣(中等) 类的继承和函数调用

284. 顶端迭代器

请你设计一个迭代器,除了支持 hasNext 和 next 操作外,还支持 peek 操作。

实现 PeekingIterator 类:

PeekingIterator(int[] nums) 使用指定整数数组 nums 初始化迭代器。
int next() 返回数组中的下一个元素,并将指针移动到下个元素处。
bool hasNext() 如果数组中存在下一个元素,返回 true ;否则,返回 false 。
int peek() 返回数组中的下一个元素,但 不 移动指针。
 

示例:

输入:
["PeekingIterator", "next", "peek", "next", "next", "hasNext"]
[[[1, 2, 3]], [], [], [], [], []]
输出:
[null, 1, 2, 2, 3, false]

知识学点:

  1. 如何继承class父类,用::
  2. 如果想调用class A中的成员变量a,那么就写成A::a
  3. 表示作用域,和所属关系,比如:
class A
{
  public:
    int test();  // 只是声明,但是没具体写函数,在下面下
}

int A::test()//表示test是属于A的   ,写Class A中test函数的具体内容!
{
  return 0;
}

题解:https://leetcode-cn.com/problems/peeking-iterator/solution/ding-duan-die-dai-qi-by-leetcode-solutio-8toa/

代码:

class PeekingIterator : public Iterator {  //这里peekingiteror继承了父类Iterator,该父类自带next()和hasnext()函数!!!
private:
    bool flag;
    int nextnum;
public: PeekingIterator(const vector<int>& nums) : Iterator(nums) { flag=Iterator::hasNext(); // 调用父类的函数,得到bool解 if(flag) nextnum=Iterator::next(); // 调用父类的函数,得到下一个值 } int peek() { return nextnum; } int next() { int res=nextnum; flag=Iterator::hasNext(); // 移动指针 if(flag) nextnum=Iterator::next(); return res; } bool hasNext() const { return flag; } };
原文地址:https://www.cnblogs.com/stepping/p/15369589.html