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

blueoceanli 2008-03-17 04:05:11
求remove_if逻辑处理过程,数据如何移动的?
...全文
67 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这个....
你下一个sgi的stl实现就行了

http://www.sgi.com/tech/stl/stl.tar
blueoceanli 2008-03-17
  • 打赏
  • 举报
回复
谢谢楼上
有没有电子版的STL源码
  • 打赏
  • 举报
回复
g++的实现,当然得移动元素了。

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);
}

blueoceanli 2008-03-17
  • 打赏
  • 举报
回复
晕倒
12345
remove_if(=1)
23455
我想知道的这里面是不是有多次copy动作
hastings 2008-03-17
  • 打赏
  • 举报
回复
看名字就能看出来呀...

64,184

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧