STL,列表,迭代器

时间:2010-09-17 21:39:58

标签: list stl iterator

Exscusme买我的英文)))

我有这个问题: 我必须使用可能的编辑项目在STL列表中迭代项目:删除,添加,编辑。 这是我的方法:

void MoveOnNewPlace(Tree& parent, Tree& child)
{

    Tree *temp=&parent;
    while(temp->GetParent()!=temp && temp->GetItem().GetChar()=='(')
        temp=temp->GetParent();
    if(*temp==parent) return;
    Tree newTr(child);
    newTr.SetParent(*temp);
    temp->GetSubNodes()->push_back(newTr); //(Tree(child,temp));
    parent.GetSubNodes()->remove(child);

}

list<Tree>::_Nodeptr ptr=nodes->_Myhead->_Next;
    unsigned int i=0;
    while(i++<nodes->size() && ptr!=0)
    {
        Prepair(ptr->_Myval);
        if(ptr->_Myval.GetItem().GetChar()=='[')
            MoveOnNewPlace(t,ptr->_Myval);
        ptr=ptr->_Next;
    }

有人可以告诉我,如果没有明确使用_Myhead,_Myhead等,我可以用其他方式做到这一点。 谢谢!

1 个答案:

答案 0 :(得分:1)

您是否考虑过使用list<Tree>::iteratorlist<Tree>::const_iterator

for (list<Tree>::iterator i = list.begin(); i != list.end(); ++i) {
    ...do stuff with *i...
}