在链表中删除元素看起来很简单,其实有机关。
list<char>::iterator iter,iternext;
list<char> list2;
之前我使用以下方法
for(iter=list.begin();iter != list.end();iter++)
{
if (*iter == ‘a’)
{
iternext=iter;
iternext--;
list2.erase(iter);
iter=iternext;
}
}
但发现如果是第一个元素就完了。
后来我试图在循环体内改进,但无论如何改进都没用。
最后发现必须改变循环条件,如下
for(iter=list.begin();iter != list.end();)
{
if (*iter == ‘a’)
{
iternext=iter;
iternext++;
list2.erase(iter);
iter=iternext;
continue;
}
iter++;
}
以上也是我认为最完美的解决方案。