【疑问】关于STL中list的的增添、删除
//attribute是一个自定义的结构
list <attribute> l_popo;//定义一个list容器
...
//按下空格键时向list内增添一个元素,att是attribute类型的变量
l_popo.push_back(att);
...
//在程序循环中,用for循环遍历该list
for(list <attribute> ::iterator iter=l_popo.begin();iter!=l_popo.end();++iter)
{
if(/*满足某条件时*/)
{
l_popo.erase(iter);//?????问题就在这儿,为什么这里一删除就会出错呢?
}
}
//---------------------------
新手初学,望各位达人、高手不吝赐解
//---------------------------
[解决办法]
//在程序循环中,用for循环遍历该list
for(list <attribute> ::iterator iter=l_popo.begin();iter!=l_popo.end();)
{
if(/*满足某条件时*/)
{
iter = l_popo.erase(iter);//这样就没问题了
}
else
++iter;
}