坑 - stl之删除元素

Posted letsgollc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了坑 - stl之删除元素相关的知识,希望对你有一定的参考价值。

  • 概述

         stl中删除元素,会使用到erase或remove,erase一般用于删除一个或者一段范围内的元素,而remove则可以删除指定值的所有元素。但是在使用remove时会有一些需要注意的地方,不细心的话容易掉坑里,故记录在此。

 

  • remove的原型
template <class ForwardIterator, class T>
  ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val);

       参数:

       [first, last)规定了被操作的范围,其中不包含last边界;

       val表示要被删除的值。

  • 示例

        技术分享图片

        输出如下↓↓↓↓↓

        技术分享图片

  • 解析

        执行remove后:

        1>、返回值为最后一个未被删除的元素的下一个位置;

        2>、原始vector的size未变化;

        3>、可以看出remove操作仅仅将后续有效数据往前移动到自由位置,具体算法如下↓↓↓↓

               技术分享图片

 

以上是关于坑 - stl之删除元素的主要内容,如果未能解决你的问题,请参考以下文章

STL容器之<set>

STL之Vector

STL之list

C++ STL 之 deque

STL容器适配器之<queue>

stl源码剖析-序列式容器 之 list