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

作者: admin 分类: C++ 发布时间: 2019-12-07 12:08

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

 

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

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

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

 

对于map还可以写成这样

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

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

标签云