最近看模板类的时候,用到了泛型编程中的remove方法,搜索了一下,自己折腾了一番,总算搞清楚了remove方法,写下来和大家一起分享,同时也可以增加一下记忆
关于泛型编程中的remove方法,官方给的模版类定义如下:1
2template < class ForwardIterator, class T >
ForwardIterator remove ( ForwardIterator first, ForwardIterator last,const T& value );
说简单点就是remove
接受三个参数,前两个迭代器或者指针表示一个范围,最后一个数,代表要从前面的范围中“移除”的值,这个方法不难理解,看一段代码:
1 |
|
需要注意的是remove
不是容器模版类vector专有的方法,而是泛型方法,所以需要加入头文件#include<algorithm>
这个容器的输出结果是
主要是因为erase方法把后面的元素真正删除了
那么我们再看一下下面的代码:
1 |
|
执行之后我们发现,remove并没有把元素真正删除,只是被后面的元素覆盖了,首先遇到第一个6的时候,然后3将6覆盖,后面因为除了6就没有其它元素了,所以后面的元素就不再处理由于第一个6被覆盖,所以后面的两个元素仍然是6和3,而且remove返回的是指向后面那些被移除的元素的首元素,本例中指向6,于是上面的一个例子,删除remove的返回值和array.end()中的数,就把后面的6和3删除了,于是输出的是1 3