C ++的lamada表达式
时间: 2024-03-27 08:40:55 浏览: 117
C++11引入了Lambda表达式,使得C++也具备了函数式编程的能力。Lambda表达式的语法格式如下:
```c++
[capture-list] (params) -> return-type { body }
```
其中,`capture-list`是捕获列表,用于捕获外部变量;`params`是参数列表;`return-type`是返回值类型;`body`是函数体。Lambda表达式可以像函数一样被调用,也可以作为参数传递给其他函数。例如,要定义一个Lambda表达式来计算两个整数的和,可以使用如下代码:
```c++
#include <iostream>
int main() {
// 定义Lambda表达式
auto sum = [](int a, int b) -> int { return a + b; };
// 使用Lambda表达式
std::cout << sum(1, 2) << std::endl; // 输出3
return 0;
}
```
在上面的代码中,我们使用`auto`关键字来推导Lambda表达式的类型,省去了显式地声明类型。Lambda表达式的捕获列表可以使用`[]`、`[&]`、`[=]`、`[this]`等形式,表示不捕获任何变量、捕获所有外部变量、按值捕获所有外部变量、捕获当前对象等。Lambda表达式还支持尾返回类型推导,可以省略`-> return-type`部分,让编译器自动推导返回值类型。
相关问题
C 的lamada表达式
C语言本身并不支持Lambda表达式,但可以通过函数指针和函数指针的类型推导来模拟Lambda表达式的效果。例如,要定义一个Lambda表达式来计算两个整数的和,可以使用如下代码:
```c
#include <stdio.h>
int main() {
// 定义Lambda表达式
int (*sum)(int, int) = [](int a, int b) -> int { return a + b; };
// 使用Lambda表达式
printf("%d\n", sum(1, 2)); // 输出3
return 0;
}
```
在上面的代码中,我们定义了一个函数指针sum,它接受两个整数作为参数,返回它们的和。其中,`[]`表示Lambda表达式的开始,`(int a, int b)`表示Lambda表达式的参数列表,`-> int`表示Lambda表达式的返回值类型,`{ return a + b; }`表示Lambda表达式的函数体。然后,我们可以像调用普通函数一样使用Lambda表达式。
使用ArrayList集合,对其添加10个不同的元素,并使用四种遍历方式遍历该集合。四种遍历方式分别为使用正常for循环,应用索引遍历使用迭代器遍历使用增强for循环使用Lamada表达式(forEach)
好的,下面是使用ArrayList集合对其添加10个不同的元素,并使用四种遍历方式遍历该集合的示例代码:
```java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ArrayListDemo {
public static void main(String[] args) {
// 创建ArrayList集合
List<String> list = new ArrayList<>();
// 添加10个不同的元素
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
list.add("G");
list.add("H");
list.add("I");
list.add("J");
// 正常for循环遍历
System.out.print("正常for循环遍历:");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
// 应用索引遍历
System.out.print("应用索引遍历:");
for (int i : new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}) {
System.out.print(list.get(i) + " ");
}
System.out.println();
// 使用迭代器遍历
System.out.print("使用迭代器遍历:");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
System.out.println();
// 使用增强for循环遍历
System.out.print("使用增强for循环遍历:");
for (String s : list) {
System.out.print(s + " ");
}
System.out.println();
// 使用Lamada表达式(forEach)遍历
System.out.print("使用Lamada表达式(forEach)遍历:");
list.forEach(s -> System.out.print(s + " "));
System.out.println();
}
}
```
输出结果为:
```
正常for循环遍历:A B C D E F G H I J
应用索引遍历:A B C D E F G H I J
使用迭代器遍历:A B C D E F G H I J
使用增强for循环遍历:A B C D E F G H I J
使用Lamada表达式(forEach)遍历:A B C D E F G H I J
```
以上就是使用ArrayList集合并使用四种遍历方式遍历该集合的示例代码。
阅读全文