再问迭代器++返回this指针

乐哉悠哉 乐哉悠哉 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
http://topic.csdn.net/u/20111118/09/a94e8024-0c37-47d6-a738-6e6743b07c56.html?2261
好吧,涎着脸再问,简化,例如一个list的迭代器iterator这样定义自增运算符:
  
template <class T>
class list<T>::iterator{
public:
list<T>::iterator &operator++() {
pn=pn->next;
return *this;
}
private:
Node<T> *pn; //指向当前节点的指针
};

那么当我使用这个迭代器遍历list时,例如:

list nlist;//假设已经初始化
list<int>::iterator iter;
iter=nlist.begin();
while(iter != nlist.end()) {
cout<<*iter<<endl;
iter++;
}

每次iter++,iter的成员变量pn发生了变化,即指向list的下一个node,但是 iter 的this指针却一直是它本身吧?一直指向list的begin(),这样的话,iter != nlist.end()是否一直不能得到满足,从而不能跳出循环呢?

对比数组的话,例如:

int a[6]={1, 2, 3, 4, 5};
int *pa=a;//视pa为数组的迭代器
while( pa!=&(a[5]) ) {
cout<<*pa<<endl;
pa++;
}

在这个过程中,pa本身每次都发生了变化,所以最后当 pa == &(a[5])就跳出了循环。

但是迭代器那个是怎样使iter == nlist.end()得到实现的呢?
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
乐哉悠哉
C++ 语言 65,214 成员 250,514 内容