- 概述
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操作仅仅将后续有效数据往前移动到自由位置,具体算法如下↓↓↓↓