帮忙看看这段程序哪有错误
//lst是list容器 iter为迭代器
iter=lst.begin();
for(;iter!=lst.end();iter++)
{
CClientConn *pClientConn=(CClientConn*)*iter; //CClientConn是自定义的类
if(pClientConn->isExit())
{
lst.erase(iter);
delete pClientConn;
pClientConn=NULL;
}
}
这样运行时出错,原因在
for(;iter!=lst.end();iter++)
{
CClientConn *pClientConn=(CClientConn*)*iter; 这两行上,经过循环后,iter已经不满足iter!=lst.end(),但是还能进入到循环,pClientConn=(CClientConn*)*iter取不到值,出错了,可是为什么还能进入循环呢,先下面这样就不会出现错误:
iter=lst.begin();
for(;iter!=lst.end();) //注意这里把iter++去掉,放到下面
{
CClientConn *pClientConn=(CClientConn*)*iter; //CClientConn是自定义的类
if(pClientConn->isExit())
{
lst.erase(iter++); //iter++放到这
delete pClientConn;
pClientConn=NULL;
}
else
iter++; //iter++放到这
}
这就正常运行,为什么啊?
谢谢各位!