Foreach In C++ And Java - C++ Programming Tutorial
C++ Course / Miscellaneous / Foreach In C++ And Java

Foreach In C++ And Java

BLUF: Mastering Foreach In C++ And Java is a critical step in becoming a proficient C++ developer. This lesson provides a deep dive into the syntax, performance considerations, and real-world applications of this concept.
Key Performance Insight: Foreach In C++ And Java

C++ is renowned for its efficiency. Learn how Foreach In C++ And Java enables low-level control and high-performance computing in the tutorial below.

The foreach loop is employed to efficiently traverse through the elements of a container (such as arrays, vectors, etc.) without the need for initialization, testing, or incrementing/decrementing. Foreach loops operate by executing a certain action for each element, rather than a specified number of times. While C does not have a foreach loop, both C++ and Java support this feature. It was initially introduced in C++ with the C++ 11 standard and in Java with JDK 1.5.0. In both C++ and Java, the "for" keyword is used for implementing the foreach loop.

Syntax

Example

for (data_type  variable_name : container_type) {
     operations using variable_name
}

We are no longer required to explicitly declare the data type for variables within foreach loops due to the auto keyword in C++ and the var keyword in Java. Type inference automatically determines the data type of the container and assigns the iterating variable with the corresponding data type.

The code provided illustrates the implementation of a foreach loop across different collections, along with the utilization of the auto/var keywords in C++/Java.

Example

// C++ program to demonstrate use of foreach for array
#include <iostream>
using namespace std;

int main()
{
	int arr[] = { 10, 20, 30, 40 };

	// Printing elements of an array using
	// foreach loop
	// Here, int is the data type, x is the variable name
	// and arr is the array for which we want to iterate foreach
	cout<<"Traversing the array with foreach using array's data type: ";
	for (int x : arr)
		cout<<x<<" ";
	
	// data type of x is set as int
	cout<<"\nTraversing the array with foreach using auto keyword	 : ";
	for (auto x : arr)
	cout<<x<<" ";
}
Example

// Java program to demonstrate use of foreach
public class Main {
	public static void main(String[] args)
	{
		// Declaring 1-D array with size 4
		int arr[] = { 10, 20, 30, 40 };

		// Printing elements of an array using
		// foreach loop
		// Here, int is the data type, x is the variable name
		// and arr is the array for which we want to iterate foreach
		System.out.print("Traversing the array with foreach using array's data type: ");
		for (int x : arr)
			System.out.print(x+" ");
	
		// data type of x is set as int
		System.out.print("\nTraversing the array with foreach using auto keyword	 : ");
		for (var x : arr)
			System.out.print(x+" ");
	}
}

Output

Output

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

Vector C++ programme:

Example

#include <iostream>
#include <vector>
using namespace std;

int main() {

	vector<string> value{"This", "is", "foreach", "example", "using", "vector."};
	
	cout<<"Traversing the vector with foreach using vector's data type: ";
	for (string v : value) {
		cout<<v<<" ";
	}

	cout<<"\nTraversing the vector with foreach using auto keyword	 : ";
	for (auto v : value)
	cout<<v<<" ";
	return 0;
}

Output

Output

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 Program:

Example

#include <iostream>
#include <set>
using namespace std;

int main() {

	set<int> value = {6, 2, 7, 4, 10, 5, 1};

	cout<<"Traversing the set with foreach using set's data type: ";
	for (int v : value) {
		cout<<v<<" ";
	}

	cout<<"\nTraversing the set with foreach using auto keyword : ";
	for (auto v : value)
	cout<<v<<" ";

	return 0;
}
Example

import java.util.*;

public class GFG {
	
	public static void main(String[] args)
	{
		Set<String> hash_Set = new HashSet<String>();
		hash_Set.add("Geeks");
		hash_Set.add("For");
		hash_Set.add("Geeks");
		hash_Set.add("Foreach");
		hash_Set.add("Example");
		hash_Set.add("Set");

		System.out.print("Traversing the set with foreach using set's data type: ");
		for(String hs : hash_Set) {
			System.out.print(hs+" ");
		}
	
		System.out.print("\nTraversing the set with foreach using auto keyword : ");
		for (var hs : hash_Set) {
			System.out.print(hs+" ");
		}
		
	}
}

Output

Output

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

When iterating over arrays, vectors, and sets, it is possible to utilize various data types within foreach loops.

C++/Java Map Program:

Example

#include <iostream>
#include <map>
using namespace std;

int main() {

	map<int, string> mapExample;
	mapExample.insert(pair<int, string>(1, "Geeks"));
	mapExample.insert(pair<int, string>(2, "4"));
	mapExample.insert(pair<int, string>(3, "Geeks"));
	mapExample.insert(pair<int, string>(4, "Map"));
	mapExample.insert(pair<int, string>(5, "Foreach"));
	mapExample.insert(pair<int, string>(6, "Example"));

	cout<<"Traversing the map with foreach using map's data type\n";
	for (pair<int, string> mpEx : mapExample ) {
		cout<<mpEx.first<<" "<<mpEx.second<<endl;
	}

	cout<<"\nTraversing the map with foreach using auto keyword\n";
	for (auto mpEx : mapExample){
		cout<<mpEx.first<<" "<<mpEx.second<<endl;
	}

	return 0;
}
Example

import java.io.*;
import java.util.Map;
import java.util.HashMap;

class GFG {
	public static void main (String[] args) {
		Map<Integer,String> gfg = new HashMap<Integer,String>();
	
		gfg.put(1, "Geeks");
		gfg.put(2, "4");
		gfg.put(3, "Geeks");
		gfg.put(4, "Map");
		gfg.put(5, "Foreach");
		gfg.put(6, "Example");

		System.out.println("Traversing the map with foreach using map's data type");
		for (Map.Entry<Integer, String> entry : gfg.entrySet())
				System.out.println(entry.getKey() + " " + entry.getValue());
	
		System.out.println("\nTraversing the map with foreach using auto keyword");
		for (var entry : gfg.entrySet())
				System.out.println(entry.getKey() + " " + entry.getValue());
	}
}

Output

Output

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 loop has the following advantages:

  • This improves the readability of the code.
  • Removes the possibility of data over- or under-running errors.
  • Foreach loop has the following disadvantage:

  • It is not possible to iterate over the elements in reverse order.
  • Every element will be accessed; no elements in between will be skipped.

Input Required

This code uses input(). Please provide values below:

Logic Practice
Install Logic Practice
Add to home screen for a faster app-like experience