std::list ,现在只有TYPE* 的变量,如何得到下一个元素?
辉歌 2008-07-25 10:02:50 std::list<TYPE*> mylist;
如果要遍历list的话,只能操作mylist,得到iterator,然后++或者--。
如 list<TYPE*>::iterator it = mylist.begin();
it ++,则后移,it--,则前移。
而我们学习的数据结构课程,链表的定义是:
struct DLink
{
TYPE* data;
struct DLink* next;
struct DLink* prev;
};
DLink* pHead=xxxx();
DLink* pX = pHead;
visit( pX->data);
pX = pX->next;
--------------------
类似这样的代码,直接通过DLink就可以既访问数据,又访问整个链表。真是方便。
现在std::list可麻烦了。
比如:
foo(TYPE* data)
{
...这里,我要访问递归该元素的下一个元素,怎么办?如:
if ( visit(data) ) return;
foo( data->next);
}
我只好这样做了:
foo(list<TYPE*>::iterator itMe,TYPE* data)
{
if ( visit(data) ) return;
list<TYPE*>::iterator it = ++itMe;
foo( it, *it );
}
各位有什么好的建议么?