如何将functor加入自己的函数?

vn68214 2007-04-14 03:48:40
在自己的函数里直接用less<int>之类的,不调用find。。。及其他一些泛型算法?
比如写一个过滤函数
template <typename from_iter,typename to_iter,typename method>//method is a functor
filter(from_iter begin,from_iter end,to_iter to,int num,method meth)
{
for(;begin!=end;begin++)
{
if()
{}//将*begin与num利用functor比较
else continue;
*to++=*begin;
}
}
...全文
180 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tatbaby 2007-04-14
  • 打赏
  • 举报
回复
if(meth(*begin,num))
vn68214 2007-04-14
  • 打赏
  • 举报
回复
我是想用这个函数实现由用户提供参数和方式进行过滤容器或数组内元素
method由用户提供
然后我想知道如何直接用functor而不是只把他们作为find_if的参数
长尾巴的悟空 2007-04-14
  • 打赏
  • 举报
回复
STL哇噻,太牛了
al0n9 2007-04-14
  • 打赏
  • 举报
回复
如果你想模拟find,find返回的是指向发现的元素的iterator,而不是复制到另外一个地方。
template <typename from_iter, typename method>//method is a functor
filter(from_iter begin, from_iter end, int num, method meth)
{
for(; begin!=end; ++begin)
{
if(meth(*begin == num)
break;
}
return begin;
}

调用的时候
const_iterator start= ....;
const_iterator end= ...;
filter(start, end, 8, less<int>());
roger_77 2007-04-14
  • 打赏
  • 举报
回复
functor也即函数对象
重载()操作符即可

不明白LZ的想要干什么

64,647

社区成员

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

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