相关疑难解决方法(0)

在std :: set中擦除()之后的迭代器有效性

在std :: set中擦除调用使invalidate iterator?正如我在最后一行5号以下所做的那样..?如果是,什么是从集合中删除所有元素的更好方法

class classA
{
public:
    classA(){};
    ~classA(){};
};
struct structB
{
};

typedef std::set <classA*, structB> SETTYPE;        
typedef std::map <int, SETTYPE>MAPTYPE;

int __cdecl wmain (int argc, wchar_t* pArgs[])
{
    MAPTYPE mapObj; 
    /*
      ...
      ..   Some Operation Here
      ...
      */
    for (MAPTYPE::iterator itr1=mapObj.begin(); itr1!=mapObj.end(); itr1++) 
    {       
        SETTYPE li=(*itr1).second;
        for (SETTYPE::iterator itr2=li.begin();itr2!=li.end();itr2++) 
        {
            classA *lt=(classA*)(*itr2);
            li.erase(itr2); 
            delete lt; // Does it invalidate Iterator ?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ stl set

10
推荐指数
3
解决办法
2万
查看次数

标签 统计

c++ ×1

set ×1

stl ×1