首页 > 代码库 > lambda的使用
lambda的使用
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的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。