2010-09-17 236 views
0

Exscusme買我的英文)))STL,列表,迭代器

我有這樣的問題:我 迭代,必須與更多鈔票編輯項目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

您是否考慮過使用list<Tree>::iteratorlist<Tree>::const_iterator

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

如果我使用列表 ::爲const_iterator然後我得到的編譯錯誤, 如果我使用列表:迭代我得到運行時錯誤,因爲列表項可以被刪除,並導致內存訪問衝突。 – Roman 2010-09-17 21:52:54

+0

不幸的是,它不起作用。 – Roman 2010-09-17 22:03:41