[c++0x]如何将 lambda 对象压入容器中?

fallening 2011-01-17 05:38:04

#include <iostream>
#include <vector>

using namespace std;

auto l1 = [](double d) { std::cout << d << std::endl; };
auto l2 = [](double d) { std::cout << d*d << std::endl; };

int main()
{
vector<decltype(l1)> lambda_arr;
lambda_arr.push_back( ( l1 ) );
lambda_arr.push_back( ( l2 ) );

for ( auto i = lambda_arr.begin(); i != lambda_arr.end(); ++i )
i( 2.2 );

return 0;

...全文
114 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fallening 2011-01-17
  • 打赏
  • 举报
回复
多谢楼上诸位,结贴了~~~~

许久没来,csdn 还是一如既往,藏龙卧虎哦~~
  • 打赏
  • 举报
回复
vector<function<void(double)> > lambda_arr;
muyu1990 2011-01-17
  • 打赏
  • 举报
回复
学习·····
太乙 2011-01-17
  • 打赏
  • 举报
回复
道士好前卫~!
healer_kx 2011-01-17
  • 打赏
  • 举报
回复
咕~~(╯﹏╰)b
估计得用boost的function。
zhangsongcui 2011-01-17
  • 打赏
  • 举报
回复
#include <iostream>
#include <vector>
#include <functional>

using namespace std;

void fn2(int b)
{
cout << b*b << endl;
}

struct fn3
{
void operator()(int c)
{
cout << c*c*c << endl;
}
};

int main()
{
std::function<void(int)> fn=[](int a){cout << a << endl;};
vector<std::function<void(int)> > v;
v.push_back(fn);
v.push_back(fn2);
v.push_back(fn3());
v.push_back([](int d){cout << d*d*d*d << endl;});
for (auto iter=v.begin(), end=v.end(); iter!=end; ++iter)
(*iter)(2);
system("PAUSE");
return 0;
}
zhangsongcui 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 eastcowboy 的回复:]

用std::tr1::function试试。
std::tr1::function<void()> l1 = [](double d) { std::cout << d << std::endl; };
[/Quote]
#include <functional>
std::function<void(double)> l1= [](double d) { std::cout << d << std::endl; };
eastcowboy 2011-01-17
  • 打赏
  • 举报
回复
用std::tr1::function试试。
std::tr1::function<void()> l1 = [](double d) { std::cout << d << std::endl; };
itslmde 2011-01-17
  • 打赏
  • 举报
回复
帮顶吧,C++里的lambda,可惜现在还没有正式发布。

64,680

社区成员

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

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