vs中拷贝出来的
template<class _Pr1>
void remove_if(_Pr1 _Pred)
{ // erase each element satisfying _Pred
_Remove_if(_Pred);
}
template<class _Pr1>
void _Remove_if(_Pr1& _Pred)
{ // erase each element satisfying _Pred
for (iterator _First = begin(); _First != end(); )
if (_Pred(*_First))
_First = erase(_First);
else
++_First;
}
看它的实现方法,是为了更好地理解它的参数。
for (iterator _First = begin(); _First != end(); )
if (_Pred(*_First))
_First = erase(_First);
else
++_First;
}
看这里,_Pred(_First),这里传入的是_First,而_First是迭代器,*迭代器就是这个容器中存放的元素。如果std::list<对象名> 则这里传入的就是该对象本身,如果是std::list<指针> 那么这里传入的就是该指针。
参考:
https://blog.csdn.net/louobaichu/article/details/49300675
http://www.cplusplus.com/reference/list/list/remove_if/