由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一道C++ template的面试题
相关主题
面完G的电面了,忐忑问一道题
How to handle the return type of container.size() in C++请教为什么这段程序运行不work?(doubly linked list) (转载
实现vector的iterator,template问题Scala怎么通过index访问set或者array
ANY IDEA?请教 Iterator 一题
一道onsite面试题贴一个C++ nested Iterator的code,求讨论和指正。
问个题店面C++ file iterator,跪了
这周一的G家onsite,虽然挂了,还是发个面筋攒人品吧刷了半天题
iterator 实现 如何 peek(),pop()?LC的BST iterator到底要考察什么?
相关话题的讨论汇总
话题: iterator话题: iter话题: typename话题: container话题: c++
进入JobHunting版参与讨论
1 (共1页)
b****g
发帖数: 192
1
题目很简单,没什么说的,但是我卡在C++语法上了。
需要自己写个模板,模板里有个iterator,于是我就不知道该怎么写了。
template
class Wrapper
{
iterator it;
};
给class T做个模板,T可以是vector、list等等。我要写的模板就是把T的iterator赋
给it,这样我在it里面找next就相当于在T的iterator里面找。
d**********x
发帖数: 4083
2
typename T::iterator it = xxx.begin();
之类的?

【在 b****g 的大作中提到】
: 题目很简单,没什么说的,但是我卡在C++语法上了。
: 需要自己写个模板,模板里有个iterator,于是我就不知道该怎么写了。
: template
: class Wrapper
: {
: iterator it;
: };
: 给class T做个模板,T可以是vector、list等等。我要写的模板就是把T的iterator赋
: 给it,这样我在it里面找next就相当于在T的iterator里面找。

r*******e
发帖数: 7583
3
template
class IteratorWrapper {
public:
IteratorWrapper(T& container)
: d_container(container), d_iter(container.begin()) {
}
bool hasNext() {
return d_iter != d_container.end();
}
typename T::reference next() {
typename T::reference v = *d_iter;
++d_iter;
return v;
}
private:
T& d_container;
typename T::iterator d_iter;
};

iterator赋

【在 d**********x 的大作中提到】
: typename T::iterator it = xxx.begin();
: 之类的?

d**********x
发帖数: 4083
4
你居然看懂了那个题的要求。。。

【在 r*******e 的大作中提到】
: template
: class IteratorWrapper {
: public:
: IteratorWrapper(T& container)
: : d_container(container), d_iter(container.begin()) {
: }
: bool hasNext() {
: return d_iter != d_container.end();
: }
: typename T::reference next() {

c*****u
发帖数: 867
5
谢谢!我问的就是这个typename的语法!

【在 d**********x 的大作中提到】
: typename T::iterator it = xxx.begin();
: 之类的?

b****g
发帖数: 192
6
请教一下
我按照你的方法写,发现 d_iter != d_container.end(); 这里永远是不相等。
于是我单步调试发现end()的返回值为负数。而d_iter是从0开始逐步加1。于是上
面的不等式永远成立。
请问这是怎么回事?

【在 r*******e 的大作中提到】
: template
: class IteratorWrapper {
: public:
: IteratorWrapper(T& container)
: : d_container(container), d_iter(container.begin()) {
: }
: bool hasNext() {
: return d_iter != d_container.end();
: }
: typename T::reference next() {

b****g
发帖数: 192
7
up

【在 b****g 的大作中提到】
: 请教一下
: 我按照你的方法写,发现 d_iter != d_container.end(); 这里永远是不相等。
: 于是我单步调试发现end()的返回值为负数。而d_iter是从0开始逐步加1。于是上
: 面的不等式永远成立。
: 请问这是怎么回事?

r*********n
发帖数: 4553
8
我觉得不要存vector的iterator,因为很多操作都会invalidate vector iterator,所
以你在wrapper里面存一个reference就好了,至于为什么是负数,我也没看出来(你忘
记delete了)....
1 (共1页)
进入JobHunting版参与讨论
相关主题
LC的BST iterator到底要考察什么?一道onsite面试题
C++在vector里找>50的数,怎么找?问个题
包子求大牛:C++的list iterator实现这周一的G家onsite,虽然挂了,还是发个面筋攒人品吧
贴一道take home的面试题iterator 实现 如何 peek(),pop()?
面完G的电面了,忐忑问一道题
How to handle the return type of container.size() in C++请教为什么这段程序运行不work?(doubly linked list) (转载
实现vector的iterator,template问题Scala怎么通过index访问set或者array
ANY IDEA?请教 Iterator 一题
相关话题的讨论汇总
话题: iterator话题: iter话题: typename话题: container话题: c++