Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js
Skip to main content
Library homepage
 

Text Color

Text Size

 

Margin Size

 

Font Type

Enable Dyslexic Font
Engineering LibreTexts

8.2: Range -Based Loops

( \newcommand{\kernel}{\mathrm{null}\,}\)

Range-based for loop in C++

The concept of a range-based for loop in C++ is added in 2011. It executes a for loop over a range of vallues. Used as a more readable equivalent to the traditional for loop operating over a range of values, such as all elements in an array.

Syntax :

for ( range_declaration : range_expression ) 
    loop_statement

Parameters :
range_declaration : 
a declaration of a named variable, whose type is the 
type of the element of the sequence represented by 
range_expression, or a reference to that type.
Often uses the auto specifier for automatic type 
deduction.

range_expression : 
any expression that represents a suitable sequence 
or a braced-init-list.

loop_statement : 
any statement, typically a compound statement, which
is the body of the loop.

This is a new concept to many programmers who have never programmed in a language that has a range based loop.

Here is a simple piece of code to start with.

// Illustration of range-for loop 
// using CPP code 
#include <iostream> 
#include <vector> 
using namespace std;

//Driver 
int main() 
{ 
    // Iterating over whole array 
    vector<int> myVec = {0, 1, 2, 3, 4, 5}; 
    for (auto countNum : myVec) 
        cout << countNum << ' ';     
     
    return 0;
}

Several things to pay attention to:

  • A new #include statements - <vector> 
  • We declare a vector - basically an array - that contains 6 elements
  • Our for statement is different:
    • we create a variable countNum - each time through the loop this variable is set to the next value in the array - this is similar to the way Python can do a for loop.
  • We do not have our typical update of our flag variable

A long, more complex example is below

// Illustration of range-for loop 
// using CPP code 
#include <iostream> 
#include <vector> 
#include <map> 

//Driver 
int main() 
{ 
    // This is what we just looked at above Iterating over whole array 
    vector<int> myVec = {0, 1, 2, 3, 4, 5}; 
    for (auto countNum : myVec) 
        cout << countNum << ' '; 
    
   cout << '\n'; 
    
    // the initializer may be a braced-init-list - so we specify the vector in the for statement
    for (int arrNum : {0, 1, 2, 3, 4, 5}) 
        cout << arrNum << ' '; 
    
    out << '\n'; 

    // Declare the array then iterate over the array 
    int intArr[] = {0, 1, 2, 3, 4, 5};     
    for (int arrNum : intArr) 
        cout << arrNum << ' '; 
    
    cout << '\n'; 
    
    // Just running a loop for every array element 
    for (int arrNum : intArr) 
        cout << "In loop" << ' '; 
    
    cout << '\n'; 
    
    // Printing string characters 
    string myStr = "CSP 31A"; 
    for (char c : myStr) 
        cout << c << ' '; 
        
    cout << '\n'; 
    
    return 0;
} 

 

Adapted from:
"Range-based for loop in C++" by Rohit ThapliyalGeeks for Geeks is licensed under CC BY-SA 4.0

 


This page titled 8.2: Range -Based Loops is shared under a CC BY-SA license and was authored, remixed, and/or curated by Patrick McClanahan.

  • Was this article helpful?

Support Center

How can we help?