文章目录



list遍历删除节点时,处理不好会出现崩溃的情况。

错误方法

下面这种用法会在for的地方崩溃,分析 第一次for循环的时候 it=0,当t.erase(it)执行完成之后 it就变成了 -17891602,表明it不能再作为迭代器进行运算,自然会报错。

void CExmp::removeelem(list<int> &li, int value)
{
    for (list<int>::iterator it = li.begin(); it != li.end();++it)
    {
        if (value == *it)
            li.erase(it);
    }
}

正确方法

void CExmp::removeelem(list<int> &li, int value)
{
    for (list<int>::iterator it = li.begin(); it != li.end();)
    {
        if (value == *it)
            li.erase(it++);
        else
            ++it;
    }
}
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐