博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL容器的删除操作
阅读量:6739 次
发布时间:2019-06-25

本文共 532 字,大约阅读时间需要 1 分钟。

今天做一个小程序,居然发现用vector的删除操作时遇到了问题:考虑,当需要遍历容器,并且对其中某些元素进行删除操作,正确的做法是怎样?

首先,容器的删除操作,如vector的erase,其参数为游标类型,直接在遍历过程中利用游标进行删除的话,涉及到游标的移动问题,容易产生越界错误。

直接上例子吧,非常简单:

//vector
::iterator itr = v.begin();while( itr!=v.end() ){  if( need to delete )    itr = v.erase(itr);  else    itr++;}//list
::iterator itr = lst.begin();while( itr!=lst.end() ){  if( need to delete )    itr = lst.erase(itr);  else    itr++;}

其原理也非常容易记忆:只要保证在erase元素的时候,新游标通过返回值获取,而不能再自增即可。

 

转载于:https://www.cnblogs.com/haba/p/3411162.html

你可能感兴趣的文章