悠悠楠杉
C++中lambda表达式作为函数参数的用法
在 C++ 中,lambda 表达式可以作为函数的参数传递,其语法形式为:
cpp
return_type lambda (arg1, arg2, ...) {
// 函数体
}
其中,lambda 表达式可以返回任何表达式,也可以作为函数的参数传递。此外,lambda 表达式还可以作为函数的复合函数的一部分。
示例 1:将 lambda 表达式作为函数参数传递
假设我们有一个函数,其参数是一个 lambda 表达式。例如:
cpp
int count (const std::vector
return nums.back();
}
int main() {
int result = count({1, 2, 3, 4, 5});
std::cout << "结果为:" << result << std::endl;
return 0;
}
在这个例子中,count 函数的参数是一个 lambda 表达式,该表达式获取一个向量的最后一个元素。
示例 2:将 lambda 表达式作为函数的复合函数
假设我们有一个函数,其返回值是一个 lambda 表达式。例如:
cpp
int add_two(int a, int b) {
return a + b;
}
int addtwoandlambda(int a, int b) {
return addtwo(a, b) + 2;
}
int main() {
int result = addtwoand_lambda(1, 3);
std::cout << "结果为:" << result << std::endl;
return 0;
}
在这个例子中,addtwoandlambda 函数返回的是 addtwo 的结果加上 2,而 addtwo 的结果是一个整数,因此 addtwoandlambda 的返回值也是一个整数,但可以通过 lambda 表达式实现。
示例 3:将 lambda 表达式作为函数的返回值
假设我们有一个函数,其返回值是一个 lambda 表达式。例如:
cpp
int add_two(int a, int b) {
return a + b;
}
int addtwoandlambda(int a, int b) {
return addtwo(a, b);
}
int main() {
int result = addtwoand_lambda(1, 3);
std::cout << "结果为:" << result << std::endl;
return 0;
}
在这个例子中,addtwoandlambda 函数返回的是 addtwo(a, b) 的结果,而 addtwo 的结果是一个整数,因此 addtwoandlambda 的返回值也是一个整数,但可以通过 lambda 表达式实现。
示例 4:将 lambda 表达式作为函数的函数参数传递
假设我们有一个函数,其参数是一个 lambda 表达式。例如:
cpp
int count (const std::vector
int count = 0;
for (int num : nums) {
count++;
}
return count;
}
int main() {
int result = count({1, 2, 3, 4, 5});
std::cout << "结果为:" << result << std::endl;
return 0;
}
在这个例子中,count 函数的参数是一个 lambda 表达式,该表达式遍历了一个向量,并返回该向量的大小。
示例 5:将 lambda 表达式作为函数的复合函数的一部分
假设我们有一个函数,其返回值是一个 lambda 表达式。例如:
cpp
int add_two(int a, int b) {
return a + b;
}
int addtwoandlambda(int a, int b) {
int sum = addtwo(a, b);
return sum + 2;
}
int main() {
int result = addtwoand_lambda(1, 3);
std::cout << "结果为:" << result << std::endl;
return 0;
}
在这个例子中,addtwoandlambda 函数返回的是 sum + 2,而 sum 是 addtwo(a, b) 的结果,因此 addtwoand_lambda 的返回值可以通过 lambda 表达式实现。
总结:
