×

C++ Range-based For Loop

In C++ language, the range-based for loop was added, which is far superior than the ordinary For loop. The implementation of a range-based for loop doesn't really need much code. It's a sequential generator that iterates each container element across a set of values (from beginning to end). This for loop is specifically used with collections such as arrays and vectors.

Syntax:

for (range_of_declaration : range_of_expression ) {
	// program code
}  
  • Range_of_declaration: It's used to define a variable with the same type as the accumulated items indicated by the range expression or a value to that type.
  • Range_of_expression: It defines a range expression that represents the appropriate sequence of items.
  • Program code: It specifies the content of the range-based for loop, which comprises one or even more lines to be repeated until the range-expression is finished.

We may use the auto keyword to automatically identify the data type of the range expression if we are not familiar with the data type of the contained items.

C++ Range-based For Loop

Fig. Ranged for Loop working

Range based For Loop Using Array:

This method is explained below using an example.

Example:

#include <iostream>
using namespace std;


int main() {


    // initializing an array  
    int numArrays[] = {10, 20, 30, 40, 50};


    // using ranged for loop to print the array of given elements  
    for (int x : numArrays) {
        cout << x << " ";
    }
  
    return 0;
}

Output:

10 20 30 40 50

Explanation:

We declared and initialised an int array namely numArrays in this example. To print the items in numArrays, we utilised the ranged for loop.

The first iteration accepts the value of an array's first element, which is 10, the second iteration uses the input of 20 and prints it, and so on.

The ranging for loop generates a sequence the array from start to finish automatically. The loop's number of iterations does not need to be specified.

Range based For Loop Using Vector:

This method is explained below using an example.

Example:

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


int main() {


    // declaring and initializing vector  
    vector<int> num_vect = {10, 20, 30, 40, 50};


    // printing the vector elements  
    for (int x : num_vect) {
        cout << x << " ";
    }
  
    return 0;
}

Output:

10 20 30 40 50

Explanation:

We declared and initialised a vector<int> array namely num_vect in this example. To print the items in num_vect, we utilised the ranged for loop.

The first iteration accepts the value represented by int x of an array's first element, which is 10, the second iteration uses the input of 20 and prints it, and so on.

Declaring a Collection inside the For Loop:

This method is explained below using an example.

Example:

#include <iostream>


using namespace std;


int main() {


    // defining the collection inside the loop itself
    for (int x : {10, 20, 30, 40, 50}) {
        cout << x << " ";
    }


    return 0;
}

Output:

10 20 30 40 50

Explanation:

The collection has been defined within the loop itself, i.e.

Ranged_Expression = {1, 2, 3, 4, 5}

This is also a legal technique to use the rangedg for loop, and it functions similarly to using a real array or vector.

Best Practices for C++ Ranged For Loops:

In each iteration of the for loop in the examples above, we declared a variable to hold every element of the collection.

int nums[3] = {10, 20, 30};


// copying the elements of nums to vars
for (int vars : nums) {
    // programming code
}

But it's preferable to write the range based for loop like follows:


// accessing the memory location of elements of nums
for (int &vars : nums) {
    // programming code
}

We should notice how & is used before var.

int vars: nums - In each iteration, replicates every element of nums here to vars variable. This is detrimental to computer memory.

int &vars: nums - Doesn't really replicate all of nums' elements to vars. Instead, nums' elements are accessed straight from nums. This is more practical.

The reference operator is represented by the & symbol and the C++ pointers will teach us more about it.

C++ Range-based For Loop

Fig. Address pointer working in ranged for Loop

Note: It is preferable using the const keyword in ranged declaration if we are not changing the array/vector/collection inside the loop.

Advantages of using Range-based for loop:

  • It's simple to use, and the syntax is straightforward.
  • The number of components in a container does not need to be calculated in a range-based for loop.
  • It detects the containers' beginning and ending components.
  • We can simply change the container's size and components.
  • It does not duplicate the components in any way.
  • It's a lot quicker than the standard for loop.
  • The auto keyword is commonly used to determine the data type of container components.

Disadvantages of using Range-based for loop:

  • It is unable to traverse a section of a list.
  • It can't be utilised to go backwards in time.
  • It is not suitable for usage in pointers.
  • It does not include a current element index.

Related Topics

C++ Bitset

Overview In C++, bitset represents a fixed-sequence of some bits values by either 0 and 1. Zero represents the value as false or unset, while 1 represents the value as true...

4 minutes read.

How the value is passed in C++

Introduction: The call-by-value method of giving arguments to a function duplicates the real value of an argument into the formal parameter of the function. In this instance, modifications to the parameter...

5 minutes read.

Approach in C++

Object oriented programming languages like Java or C++ use a bottom-up approach that identifies each object first.  In the bottom-up approach, we create a small problem first, and try to...

6 minutes read.

C++ Friend Functions

In C++, friends are special functions that are not a part of a class yet have access to its private and protected members. The friend keyword is used to declare...

4 minutes read.

Implementation of a Falling Matrix in C++

In many Hollywood and Bollywood movies, we might have seen a programmer who will be referred to as a hacker all the time for some random reason which the writer...

3 minutes read.

Differences between Local and Global Variable

Define Global Variable Global variables are those that may be accessible worldwide across a programme and are defined outside of any functions or blocks. It may be accessed by any function in...

3 minutes read.

Hello World Program in C++

The steps for “Hello World” C++ program are as follows: Write a C++ code given below in an editor. Save the file with .cpp Compile the code using C++ compiler or using online...

3 minutes read.

C++ Memory Management

Memory management is a method of controlling computer memory and allocating memory space to applications to increase overall system performance. What is the purpose of memory management? Because the array contains homogeneous...

4 minutes read.

C++ Do while loop

In this article, we will discuss the C++ Do-While loop with its syntax, working, key features, algorithm, and examples. Do-While Loop: The do-while loop constitutes a specific style of looping construct in...

5 minutes read.

C++ Void Pointer

A void pointer is a general purpose pointer that can have an address of any data type but is not related to any data type. Void Pointer Syntax: void *ptr;  We can't...

2 minutes read.

C++ Encapsulation

The following two essential components are present in all C++ programmes: Functions are the parts of a programme that perform actions, and they are termed programme statements (code).Program data is the...

4 minutes read.

C++ Math Functions

C++ Math Functions: Like other programming languages, C++ offers plenty of mathematical functions needed for various purposes. These functions are defined mainly in the math library in C++. Let us...

4 minutes read.

C++ Data Abstraction

Object-oriented programming (OOP) provides a number of characteristics that enable programmers to design programmes based on a variety of ideas, reducing errors and increasing program flexibility. The abstraction of data...

7 minutes read.

Types of polymorphism in C++

What is polymorphism in C++ ? Polymorphism literally translates to "multiple forms". This indicates that the same thing behaves differently depending on the context in programming. Polymorphism is a feature of C++...

6 minutes read.

C++ Program For FCFS (First Come First Serve)

The most basic scheduling technique is FCFS, often known as "FIFO (First In, First Out)". In this procedure, the first one is utilized and executed first, while the second one...

4 minutes read.

Sliding Window Technique in C++

Sliding Window Technique or Window Sliding Technique is a computational technique that is mainly used to reduce the use of nested loop and replace it with a single loop. It...

4 minutes read.

C++ If-else-if

Introduction: If-else-if control statement is an if statement used with an optional else if control statement to check multiple conditions. In this control statement, when any one of the condition returns...

4 minutes read.

Multiset in C++

Introduction Multisets are part of the C++ STL, or Standard Template Library. In C++, a multiset is a set of associative containers that hold ordered items. Items in a multiset can...

10 minutes read.

Pthread in C++ Parameters

Pthreads, also known as POSIX threads, is a POSIX standard for multithreading in C/C++. It allows a program to control multiple different threads of execution concurrently. Using pthreads, you can create...

4 minutes read.

How to build a program in C++

Building a program is all about creating the program and executing it successfully. There are some steps  precisely, which must be followed to make the program. Step 1: Get an IDE...

4 minutes read.