STL, список, итератор - PullRequest
       13

STL, список, итератор

0 голосов
/ 18 сентября 2010

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 Ответ

1 голос
/ 18 сентября 2010

Рассматривали ли вы использование list<Tree>::iterator и list<Tree>::const_iterator?

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