1. 程式人生 > >STL中list的erase()方法的使用

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++;
      }

記錄之