1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Vector2D { public: Vector2D(vector<vector<int>>& v) : i(begin(v)), e(end(v)), j(0) { adjust(); }
int next() { int res = i->at(j++); adjust(); return res; }
bool hasNext() { return i != e; }
void adjust() { while (i != e && j >= i->size()) { ++i; j = 0; } }
vector<vector<int>>::iterator i, e; int j; };
|