需包含头文件#include <algorithm>
_FwdIt remove(_FwdIt _First, _FwdIt _Last, const _Ty& _Val)
// remove each matching _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); //first指向下一个不为value的位置
}
return first;
}
举例如下:
string strCode = "1*2**33*****";
remove(strCode.begin(), strCode.end(), '*');
//strCode = "1233*33*******"
返回的迭代器指向第5个元素的位置。其可结合erase实现快速删除容器内制定元素。
其它:
move的作用是将对象的所有权进行转移,只是转移并不会内存拷贝或内存搬迁。对于复杂对象,能优化程序性能。
参考: