
#include iostreamint main(int argc, char* argv[]){/*** 基本形式与语法*///如果没有传入参数参数列表可以省略auto lambda1 []() { std::cout Hello, World ! std::endl; };auto lambda2 [](int x, int y) - int //返回参数可使用尾置返回语法{if (x y)return 1;else if (x y)return -1;elsereturn 0;};/*** 输出:* Hello, World !*/lambda1();/*** 输出:* -1*/std::cout lambda2(1, 2) std::endl;/*** 输出:* 1*/std::cout lambda2(2, 1) std::endl;/*** 输出:* 0*/std::cout lambda2(1, 1) std::endl;return 0;}捕获#include iostream#include algorithm#include vector#include stringint main(int argc, char* argv[]){/*** lambda表达式捕获外部变量示例*/std::vectorint vec{ 1,2,3,4,5,6,7,8,9,10 };std::string str;//str为引用捕获在函数内部可以被修改std::for_each(vec.begin(), vec.end(), [str](int n) {str.append(std::to_string(n)).append(,);});str.pop_back();/*** 输出:* 1,2,3,4,5,6,7,8,9,10*/std::cout str std::endl;//argc为值捕获拷贝该变量在函数内部修改后不会影响外部变量std::for_each(argv, argv argc, [argc](char* args) {/*** 输出命令行参数*/std::cout args std::endl;});/*** 关于其他捕获语法* []: 所有外部变量的捕获均为值捕获拷贝