使用c++容器遍历时用erase()删除,出现死循环问题

先说下erase(),这个函数返回值是删除元素的下一个迭代位置,

for(vector<int> ::iterator it = data.begin();it != data.end();++it)
{

for(vector<int>::iterator it = data.begin();it != data.end();)
{
    if(..)
    {
        //当满足条件时,删除
        //这个需要注意,erase返回值一定要有it接收返回值,否则会出现死循环
        it = data.erase(it);
    }
    else
    {
        ++it;
    }
}

 


版权声明:本文为zhanghong056原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。