需包含头文件#include <algorithm>
_FwdIt remove(_FwdIt _First, _FwdIt _Last, const _Ty& _Val)
// remove each matching _Val
即“移除”所有与_Val相等的元素,注意并不改变原容器大小,“”移除”是指从头向尾遍历,遇到等于“_Val”的元素会将其用下一个不等于“_Val”的元素值覆盖,最终返回容器不包含“_Val”元素部分的下一个位置。其函数原型相当于:
template< class ForwardIt, class T >
ForwardIt remove(ForwardIt first, ForwardIt last, const T& value)
{
first = std::find(first, last, value);
if (first != last)
for (ForwardIt i = first; ++i != last; )
if (*i != value)
{
*first++ = move(*i);
}
return first;
}
举例如下:
string strCode = "1*2**33*****";
remove(strCode.begin(), strCode.end(), '*');
//strCode = "1233*33*******"
返回的迭代器指向第5个元素的位置。其可结合erase实现快速删除容器内制定元素。
待研究:
原型函数里的move没理解作用,实际去掉也无影响。
参考: