STL容器:在遍历的过程中删除元素

/**要点:通过erase方法的返回值来获取下一个元素的位置
*/

#include 
#include 
using namespace std;

bool WillDelete(int val);

int main()
{
    std::list< int> List;
    std::list< int>::iterator itList;
    for(int i = 0; i < 10; i++)
    {
        List.push_back(i);
    }
    for( itList = List.begin(); itList != List.end(); )
    {
        if( WillDelete( *itList) )
        {
            itList = List.erase( itList); //erase返回下一个元素的位置
        }
        else
        {
            itList++;
        }
    }
    for(itList = List.begin(); itList != List.end(); itList++)
    {
        cout<<*itList<<" ";
    }
    cout<

你可能感兴趣的:(C++编程)