1. 程式人生 > >list中erase的寫法

list中erase的寫法


iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);

erase前為迭代器(指標)而不是單純的數。它的作用是使作為引數的迭代器失效,並返回指向該迭代器下一引數的迭代器。

兩種正確寫法:

正確寫法一:

//正確寫法一:
list<int> List;
list<int>::iterator itList;
for(itList=List.begin();itList!=List.end();){
    if(Delete(*itList)){
        itList=List.erase(itList);   //這句話執行以後就會返回下一個迭代器
    }
    else
        itList++;
}

 正確寫法二:

list<int> List;
list<int>::iterator itList;
for(;itList!=List.end();){
    List.erase(itList++);
}

錯誤寫法:

list<int> List;
list<int>::iterator itList;
itList=List.begin();
for(;itList!=List.end();itList++){
    List.erase(itList);
}

錯誤原因:不能跳出迴圈

List.erase(itList);每次都有可能使迭代器失效,會使itList++發生錯誤,