• 2007-10-20

    list的删除操作 - [STL]

    #include <list>
    using namespace std;
    class A
    {
    public:
        A(int i)
        {
             m = i;
        }
        ~A()
        {
            m= 0;
        }
        int m;
        int Get(){
            return m;
        }
    };


    int main(int argc, char* argv[])
    {
        list<A*> mylist;
        mylist.push_back(new A(1));
        mylist.push_back(new A(2));
        mylist.push_back(new A(3));
        mylist.push_back(new A(4));
        
        for (list<A*>::iterator it = mylist.begin(); it != mylist.end();)
        {
            int size = mylist.size();
            A *p = *it;
            if ( 2 == p->Get())
            {
                mylist.erase(it++);    
                delete p;
            }else{
                ++it;
            }
        }
        return 1;    
    }