c++ vector list map在遍历中删除元素

 

c++ STL 中的vector, list, map这些数据结构,经常需要在遍历时删除其中的元素,但是又不能直接删除,会出错。

 

在你调用erase方法删除元素时,erase方法会返回下一个元素的迭代器,利用这一点,可以写这样的代码:

 

 

for(vector::iterator it=d.begin();it!=d.end(); )
{
        if(*it==3)
       {
            it=d.erase(it);
        }
        else
       {
            it++;
        }
}

 这一点对于vector, list和map都适用。

 

对于map还可以写成这样

 

for(vector::iterator it=d.begin();it!=d.end(); )
{
        if(*it==3)
       {
            d.erase(it++);
        }
        else
       {
            it++;
        }
}

 

 

你可能感兴趣的:(c)