Tony's Log

Algorithms, Distributed System, Machine Learning

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Just take care of corner cases..

class Vector2D {
    vector<vector<int>> &r;
    int i, i0;
public:
    Vector2D(vector<vector<int>>& vec2d) : r(vec2d), i(0), i0(0)
    {
        if(r.size() > 0)
            while (r[i].size() == 0) i++;
    }

    int next() 
    {
        int ret = r[i][i0];
        //    move on
        if (i0 < r[i].size() - 1) i0++;
        else if (i < r.size() - 1)
        {
            while (r[++i].size() == 0);
            i0 = 0;
        }
        else // i == r.size() - 1
        {
            i0++;
        }
        return ret;
    }

    bool hasNext() 
    {
        if(r.size() == 0) return false;
        if (i < r.size() - 1) return true;
        return i0 < r.back().size();
    }
};
View Code

 

posted on 2015-08-22 10:59  Tonix  阅读(179)  评论(0编辑  收藏  举报