请考虑以下代码:
Class MyClass
是一个自定义类:
class MyClass
{
public:
MyClass(int v) : Val(v) {}
int Val;
};
然后以下代码将Debug Assertion Failed
在调用后立即进入循环it = T.erase(it);
:
unordered_set<MyClass*> T;
unordered_set<MyClass*>::iterator it;
for (int i=0; i<10; i++)
T.insert(new MyClass(i));
for (it = T.begin(); it != T.end(); it++)
{
if ( (*it)->Val == 5 )
it = T.erase(it); // After this line executes, in the next loop, the error occurs.
}
如何解决它,为什么?PS:我的环境:VS2010