STL中list的erase()方法的使用
最近剛剛接觸stl的list 學習的時候遇到了很多的困難 現在記錄一下 主要是erase方法的使用
erase()方法是刪除iterator指定的節點 但是要注意的是在執行完此函式的時候iterator也被銷燬了 這樣的話關於iterator的操作就會報錯 以下是關於erase()方法的正確使用
正確使用方法1 std::list< int> List;
std::list< int>::iterator itList;
for( itList = List.begin(); itList != List.end(); )
{
if( WillDelete( *itList) )
{
itList = List.erase( itList);
}
else
itList++;
}
正確使用方法2 std::list< int> List;
std::list< int>::iterator itList;
for( itList = List.begin(); itList != List.end(); )
{
if( WillDelete( *itList) )
{
List.erase( itList++);
}
else
itList++;
}
錯誤使用方法1
std::list< int> List;
std::list< int>::iterator itList;
for( itList = List.begin(); itList != List.end(); itList++)
{
if( WillDelete( *itList) )
{
List.erase( itList);
}
}
錯誤使用方法2 std::list< int> List;
std::list< int>::iterator itList;
for( itList = List.begin(); itList != List.end(); )
{
if( WillDelete( *itList) )
{
itList = List.erase( ++itList);
}
else
itList++;
}
記錄之