list中erase的寫法
阿新 • • 發佈:2019-01-05
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++發生錯誤,