大家好!我是OnlyStronger(欧洲哥)今天来给大家分享一下c++11中的Lambda表达式
Lambda表达式是C++11中的一个新特性,它是一种匿名函数,可以用于定义简单的函数对象。Lambda表达式的优点是可以方便地定义简单的函数对象,提高代码的可读性和可维护性。
Lambda表达式的语法如下:
[capture list] (params list) mutable exception-> return type { function body }
其中,capture list是捕获列表,用于捕获外部变量;params list是参数列表,用于指定函数参数;mutable关键字用于指定是否可以修改捕获的变量;exception是异常列表,用于指定函数可能会抛出的异常;return type是返回值类型;function body是函数体。
例如,下面的lambda表达式定义了一个函
auto add = [](int a, int b) -> int { return a + b; };
数对象,它接受两个整数参数并返回它们的和:
auto add = [](int a, int b) -> int { return a + b; };
在使用lambda表达式时,可以将其作为函数对象传递给其他函数,或者直接调用它。例如:
// 将lambda表达式作为函数对象传递给std::sort函数
std::vector<int> vec = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
std::sort(vec.begin(), vec.end(), [](int a, int b) -> bool { return a < b; });
// 直接调用lambda表达式
int sum = [](int a, int b) -> int { return a + b; }(3, 4);
Lambda表达式可以方便地定义简单的函数对象,提高代码的可读性和可维护性。