程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> STL中list的erase()方法,stllisterase方法

STL中list的erase()方法,stllisterase方法

編輯:C++入門知識

STL中list的erase()方法,stllisterase方法


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++;
}
復制代碼  同時要注意的是    std::list  多線程不安全的,所以多線程對list操作一般都要加鎖,保證安全性   轉自:http://blog.csdn.net/iam_charlie/article/details/6062472

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved