由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 贴一个C++ nested Iterator的code,求讨论和指正。
相关主题
[google面试]iterator访问求指点一道G家Iterator的题目
问个题binary tree的in-order iterator怎么写?
L家面试题 iterator for nested integer求讨论bst中序遍历c++ class iterator
问一道题G电面面经:BT的iterator inorder traversal
请教 Iterator 一题Flatten Binary Tree to Linked List的recursive解法
Google店面写了封信给google抱怨电面被印度人黑的经历
问一道C++ template的面试题大家帮忙看看这个4sum怎么就不对
实现vector的iterator,template问题请教一个排序的问题
相关话题的讨论汇总
话题: iterator话题: vector话题: c++话题: itr1话题: itr2
进入JobHunting版参与讨论
1 (共1页)
t*****a
发帖数: 106
1
常年用C++,看到两道题要实现iterator
1. class flatten implements iterator{
public flatten(vector> a);
boolean hasNext();
iterator next();
}
2. "Program an iterator for a List which may include nodes or List i.e. *
{0,
{1,2}, 3 ,{4,{5, 6}}} Iterator returns 0 - 1 - 2 - 3 - 4 - 5 - 6"
第一题C++可以实现,第二题除非自己定义node structure,否则感觉无解。主要是C++
里的iterator不能赋NULL,看结束也不能用"iterator==NULL"来判断,得专门维持
collection结束的标识。感觉这种题是专
门给Java的人出的,C++没法搞,起码不能用已有的STL搞,非常坑人。不知道大家有什
么建议。
第一题的C++实现。
class Iterator
{
private:
vector >::iterator itr1;
vector >::iterator itr1end;
vector::iterator itr2;
vector::iterator itr2end;
void Getitr2 ()
{
itr2=itr1->begin();
itr2end=itr1->end();
itr1++;
}
public:
Iterator(vector > &vec)
{
itr1=vec.begin();
itr1end=vec.end();
Getitr2();
}
bool hasNext()
{
return (itr2!=itr2end||itr1!=itr1end);
}
int next()
{
if(itr2==itr2end)
{
if(itr1!=itr1end)
Getitr2();
}
int val=*itr2;
itr2++;
if(itr2==itr2end)
{
if(itr1!=itr1end)
Getitr2();
}
return val;
}
};
z******g
发帖数: 271
2
你这样做意义不大,要么就写java,要么就写cpp自己的iterator
t*****a
发帖数: 106
3
好吧。这种iterator的题还是很坑C++用户的,基本上得自己定义类型定义structure从
头开始写。

【在 z******g 的大作中提到】
: 你这样做意义不大,要么就写java,要么就写cpp自己的iterator
w****a
发帖数: 710
4
G家最喜欢考iterator了
B********e
发帖数: 1062
5
http://www.careercup.com/question?id=6246384562864128

*
++

【在 t*****a 的大作中提到】
: 常年用C++,看到两道题要实现iterator
: 1. class flatten implements iterator{
: public flatten(vector> a);
: boolean hasNext();
: iterator next();
: }
: 2. "Program an iterator for a List which may include nodes or List i.e. *
: {0,
: {1,2}, 3 ,{4,{5, 6}}} Iterator returns 0 - 1 - 2 - 3 - 4 - 5 - 6"
: 第一题C++可以实现,第二题除非自己定义node structure,否则感觉无解。主要是C++

a****w
发帖数: 60
6
用c++和python的怎么办

【在 w****a 的大作中提到】
: G家最喜欢考iterator了
t**r
发帖数: 3428
7
g的题目真不简单
t*****a
发帖数: 106
8
感觉有些iterator的题C++基本就没法弄。。。写出来太复杂了,正发愁呢。

【在 a****w 的大作中提到】
: 用c++和python的怎么办
w****a
发帖数: 710
9
其实我觉得绝大部分的iterator题用C++写也无压力啊。
nested那个是有点难办。其他的还好。

【在 a****w 的大作中提到】
: 用c++和python的怎么办
t*****a
发帖数: 106
10
nested那个非要写就用一个pair, 第一个存iterator,第二个存end的标识别。把pair压
入stack
递归调用

【在 w****a 的大作中提到】
: 其实我觉得绝大部分的iterator题用C++写也无压力啊。
: nested那个是有点难办。其他的还好。

相关主题
Google店面求指点一道G家Iterator的题目
问一道C++ template的面试题binary tree的in-order iterator怎么写?
实现vector的iterator,template问题bst中序遍历c++ class iterator
进入JobHunting版参与讨论
w****a
发帖数: 710
11
用boost::any更好,真要面到我就跟面试官商量能不能用any。

【在 t*****a 的大作中提到】
: nested那个非要写就用一个pair, 第一个存iterator,第二个存end的标识别。把pair压
: 入stack
: 递归调用

t*****a
发帖数: 106
12
兄台有空给大家写个例子吧。nest多了我实在想不出好办法,每层都要存一个
collection的end标识,太麻烦了。各种nested vector, map, list. 假如有10层,存
10个iterator还得存10个end的标识,太麻烦。

【在 w****a 的大作中提到】
: 用boost::any更好,真要面到我就跟面试官商量能不能用any。
w****a
发帖数: 710
13
感觉我做法好像跟你有点不一样。比如说输入,
那个nested array我的想法大概是类似这样的:
比如输入为,{0, {1, 2}, 3 ,{4, {5, 6}}}
vector nested;
nested.push_back(any((int)0));

vector element1 = {any((int)1), any((int)2)};
nested.push_back(any(element1));

nested.push_back(any(3));

vector element3 = {any(4)};
vector element3_1 = {any(5),any(6)};
nested.push_back(any(element3_1));
迭代器:
NestedIterator it(nested);
while (it.has_next()) {
cout << it.get_next() << " ";
}
我想法是不用stl的iterator。好像跟你思路不太一样。。
当然如果用iterator的话,也可以用vector来存,any只有两种类型,iterator或者
vector

【在 t*****a 的大作中提到】
: 兄台有空给大家写个例子吧。nest多了我实在想不出好办法,每层都要存一个
: collection的end标识,太麻烦了。各种nested vector, map, list. 假如有10层,存
: 10个iterator还得存10个end的标识,太麻烦。

s******8
发帖数: 4192
14
第二题根据实际需求实现方法差别极大。内存要求,访问要求,指针长度,是否共享子
iterator,node类型等等细节决定实现。不知道细节要求,都是空中楼阁,白说。
w****a
发帖数: 710
15
第二题试写了个,抛砖引玉
http://www.fgdsb.com/2015/01/19/nested-iterator/
1 (共1页)
进入JobHunting版参与讨论
相关主题
请教一个排序的问题请教 Iterator 一题
c++里vector的size()Google店面
这周一的G家onsite,虽然挂了,还是发个面筋攒人品吧问一道C++ template的面试题
帮我看一下5行代码实现vector的iterator,template问题
[google面试]iterator访问求指点一道G家Iterator的题目
问个题binary tree的in-order iterator怎么写?
L家面试题 iterator for nested integer求讨论bst中序遍历c++ class iterator
问一道题G电面面经:BT的iterator inorder traversal
相关话题的讨论汇总
话题: iterator话题: vector话题: c++话题: itr1话题: itr2