boost::bind和boost::lambda::bind有啥区别?

BlueprintIrene 2010-10-05 10:50:49
RT
谢谢
...全文
373 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yshuise 2011-02-19
  • 打赏
  • 举报
回复
“超越c++标准库”上面有讲。我遇到过只能用lambda的情况。
yshuise 2011-02-19
  • 打赏
  • 举报
回复
有时候两个用都可以,有时候只能用lambda::bind
gules 2010-10-06
  • 打赏
  • 举报
回复
boost::bind是标准程序库std::bind1st与std::bind2nd的一般化;
而boost::lambda::bind是一个表达式,用于生成lambda的functor。
细节请查阅boost的文档。
yshuise 2010-10-06
  • 打赏
  • 举报
回复
有lambda那个,显然可以用lambda,比如:
for_each(, , boost::bind(&status::report, _1));
BlueprintIrene 2010-10-06
  • 打赏
  • 举报
回复
我的意思是,在某些情况下,能用boost::lambda::bind的地方也能用boost::bind。比如:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <boost/bind.hpp>
#include <boost/lambda/bind.hpp>

void print(const std::string& prefix, const std::string& text) {
std::cout << prefix << "::" << text << "\n";
}

int main()
{
std::vector<std::string> vec;
vec.push_back("tuple");
vec.push_back("bind");
vec.push_back("lambda");
for_each(vec.begin(), vec.end(), boost::bind(&print, "boost", _1));
for_each(vec.begin(), vec.end(), boost::lambda::bind(&print, "boost", boost::lambda::_1));
}
最后两条语句的输出结果是一样的。
这种时候,用哪个bind好呢?
另外,什么时候该用boost::bind,什么时候该用boost::lambda::bind?

65,184

社区成员

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

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