C++ 和 JAVA 的 foreach

2024年8月28日 | 阅读 4 分钟

foreach 循环用于快速迭代容器(数组、向量等)的元素,而无需执行初始化、测试或增/减操作。foreach 循环通过对每个元素执行操作来工作,而不是执行 n 次操作。尽管 C 中没有 foreach 循环,但 C++ 和 Java 支持它。它最初在 C++11 中引入 C++,在 JDK 1.5.0 中引入 Java。在 C++ 和 Java 中,foreach 循环的关键字都是“for”。

语法

由于在 C++ 中引入了 auto 关键字,在 Java 中引入了 var 关键字,我们不再需要在 foreach 循环中为变量指定数据类型。类型推断会检测容器的数据类型,并将用于遍历的变量设置为相同的数据类型。

以下代码演示了 foreach 循环在各种容器中的使用,以及 C++/Java 中的 auto/var 关键字。

C++

JAVA

输出

Traversing the array with foreach using array's data type: 10 20 30 40 
Traversing the array with foreach using auto keyword     : 10 20 30 40 

C++ 向量程序

输出

Traversing the vector with foreach using vector's data type: This is foreach example using vector. 
Traversing the vector with foreach using auto keyword      : This is foreach example using vector. 

C++/Java Set 程序

C++

JAVA

输出

Traversing the set with foreach using set's data type: 1 2 4 5 6 7 10 
Traversing the set with foreach using auto keyword   : 1 2 4 5 6 7 10

对于数组、向量和集合,我们可以在 foreach 中使用不同的数据类型。

C++/Java Map 程序

C++

JAVA

输出

Traversing the map with foreach using map's data type
1 Geeks
2 4
3 Geeks
4 Map
5 Foreach
6 Example

Traversing the map with foreach using auto keyword
1 Geeks
2 4
3 Geeks
4 Map
5 Foreach
6 Example

foreach 循环具有以下优点

  • 这提高了代码的可读性。
  • 消除了数据溢出或不足错误的发生。

foreach 循环具有以下缺点

  • 无法以相反的顺序迭代元素。
  • 每个元素都将被访问;中间的元素不会被跳过。