读书人

求remove_if逻辑处理过程,数据怎么移动

发布时间: 2012-02-25 10:01:48 作者: rapoo

求remove_if逻辑处理过程,数据如何移动的?
求remove_if逻辑处理过程,数据如何移动的?

[解决办法]
g++的实现,当然得移动元素了。

C/C++ code
  template<typename _InputIterator, typename _OutputIterator,           typename _Predicate>    _OutputIterator    remove_copy_if(_InputIterator __first, _InputIterator __last,                   _OutputIterator __result, _Predicate __pred)    {      for ( ; __first != __last; ++__first)        if (!__pred(*__first))          {            *__result = *__first;            ++__result;          }      return __result;    }  template<typename _ForwardIterator, typename _Predicate>    _ForwardIterator    remove_if(_ForwardIterator __first, _ForwardIterator __last,              _Predicate __pred)    {      __first = std::find_if(__first, __last, __pred);      _ForwardIterator __i = __first;      return __first == __last ? __first                               : std::remove_copy_if(++__i, __last,                                                     __first, __pred);    }
[解决办法]
这个....
你下一个sgi的stl实现就行了

http://www.sgi.com/tech/stl/stl.tar

读书人网 >C++

热点推荐