c++ STL 中的vector, list, map这些数据结构,经常需要在遍历时删除其中的元素,但是又不能直接删除,会出错。
在你调用erase方法删除元素时,erase方法会返回下一个元素的迭代器,利用这一点,可以写这样的代码:
-
-
for(vector<int>::iterator it=d.begin();it!=d.end(); ) { if(*it==3) { it=d.erase(it); } else { it++; } }
这一点对于vector, list和map都适用。
对于map还可以写成这样
-
-
for(vector<int>::iterator it=d.begin();it!=d.end(); ) { if(*it==3) { d.erase(it++); } else { it++; } }
文章评论