参考自c++官方文档
函数声明
来自<algorithm>
Transforms the range [first, last) into a range with all the elements that compare equal to val removed, and returns an iterator to the new end of that range.
将[first, last)范围转换为移除与val相等的所有元素的范围,并返回一个指向该范围新末端的迭代器。
c++ 中迭代器之间可以进行运算,返回的是他们之间的距离
eg: vit.begin() - vit.end(); 结果是vit的长度。
详细请了解c++中的迭代器
template <class ForwardIterator, class T>
ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val)
{
ForwardIterator result = first; // 返回值
while (first!=last) {
if (!(*first == val)) {
if (result!=first)
*result = move(*first);
++result;
}
++first;
}
return result;
}
这个函数模板的行为相当于:
通过移动赋值将目标元素替换为新值()。
result有两种情况
result所在位置的元素不是目标值,然后会和first继续向前遍历
result所在位置的元素是目标值,在目标位置停下,first继续向后碰到不是目标值的元素后,将result所在位置的元素给覆盖。