boost lambda用法请教

cutegang 2006-12-25 03:08:45

没时间去看lambda怎么用了,我的问题是:

我有一个std::vector<Foo> foos;

我想std::for_each(foos.begin(), foos.end(), ....想在这里填写...);
我想使用lambda在”想在这里填写“ 那儿调用Foo的成员函数CreateFoo();该怎么写?
我尝试写上std::for_each(foos.begin(), foos.end(), _1->CreateFoo());结果编译不过,该怎么写
...全文
156 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cutegang 2006-12-25
  • 打赏
  • 举报
回复
shorter, better.写错了。
cutegang 2006-12-25
  • 打赏
  • 举报
回复
明白了,bind对于成员函数来说,因为成员函数的第一个参数是隐藏的那个this指针,所以
std::for_each(foos.begin(), foos.end(), bind(&Foo::CreateFoo, _1);

我遇到的问题更复杂些,因为我的容器都是shared_ptr,
typedef std::vector<boost::shared_ptr<Foo> > FooPtrCon_t;
FooPtrCon_t fooPtrs;
std::for_each(foos.begin(), foos.end(), bind(&Foo::CreateFoo, *_1);

谢谢大家了。今天第一天用boost,在项目里对我负责的一个模块写测试case,boost写代码真是简洁呀,有些神奇。

shoter, better!棒!
cutegang 2006-12-25
  • 打赏
  • 举报
回复
非常非常感谢akirya,但是我还是有疑问,针对我的问题,我该怎么使用bind来调用Foo的CreateFoo函数呢, 我的vector都是Foo对象,我想针对其中的每个Foo对象都调用CreateFoo成员函数。。?thanks.
  • 打赏
  • 举报
回复
lambda的一个例子
需要用bind
bool A::foo(int) const;
A a;
vector<int> ints;
...
find_if(ints.begin(), ints.end(), bind(&A::foo, a, _1));
find_if(ints.begin(), ints.end(), bind(&A::foo, &a, _1));
caocheng8230 2006-12-25
  • 打赏
  • 举报
回复
lambda正在学习,帮忙顶

64,691

社区成员

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

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