码迷,mamicode.com
首页 > 其他好文 > 详细

lambda的使用

时间:2017-06-15 21:55:54      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:sharp   默认   初始化   out   命名   包含   false   size_type   end   

void biggies( vector<string>::size_type sz)
{
	vector<string> words{ "saw","sbe","scr","sb" };
	sort(words.begin(), words.end());
	auto endl_flag = unique(words.begin(), words.end());
	words.erase(endl_flag, words.end());
	
	stable_sort(words.begin(), words.end(), [](const string& a, const string& b) {return a.size() < b.size();});
	auto wc = find_if(words.begin(), words.end(), [sz](const string& a) {return a.size() > sz;});
	auto count = words.end() - wc;
	
	for_each(wc, words.end(), [](const string &s) {cout << s << ‘\t‘;});
	cout << endl;
}

  

void x10t21()
{
	int num = 5;
	auto f = [&num]()->bool {if (num > 0) { num--;return false; } else return true;};
	while (!f());
	cout << num << endl;;
}

  当定义一个lambda时,编译器生成一个与lambda对应的新的(未命名)类类型。当一个函数传递一个lambda时,同时定义了一个新类型和该类型的一个对象,传递的参数就是此编译器生成的类类型的未命名对象,当使用auto定义一个用lambda初始化的变量时,定义了一个从lambda生成的类型的对象。默认情况下,从lambda生成的类都包含一个对应该lambda所捕获的变量的数据成员。类似任何普通类的数据成员,lambda的数据成员也在lambda对象创建时被初始化。

lambda的使用

标签:sharp   默认   初始化   out   命名   包含   false   size_type   end   

原文地址:http://www.cnblogs.com/linear/p/7019720.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!