Iterate through map in C++

Iterate through map in C++

There are multiple ways to iterate through map in C++. Here we will discuss five methods that can be used to to iterate through map in C++.
[toc]

Using range-based for loop to to iterate through map in C++

This method is the first and the common choice for iterating over map elements. This method is supported in C++11 version and if your compiler supports it, then it is one
of the easiest ways to iterate.

Note: We use ‘auto’ type specifier as it is recommended for readability and we don’t have to mention the data types of key-value pairs every time.

Code:

#include 
#include 
using namespace std;
int main(){
    map test = {{1, "Java",},
                            {2, "Python",},
                            {3, "C++",},
                            {4, "Javascript",}
                            };
    for (const auto &item: test)
    {
        cout << "{" << item.first << "," << item.second << "}\n";
    }
    cout << endl;
    return 0;
}

Output:

{1,Java}
{2,Python}
{3,C++}
{4,Javascript}

Using range-based for loop to iterate through key-value pairs of map

in C++
This method was defined in the C++17 version for better flexibility for iteration in the containers. The main benefit of using this method is the easy access of key-value pairs in the map structure. It helps in ensuring better readability as well.
Code:

#include 
#include 
using namespace std;
int main(){
    map test = {{1, "Java",},
                            {2, "Python",},
                            {3, "C++",},
                            {4, "Javascript",}
                            };
    for (const auto& [key,value] : test)
    {
        cout << "{" << key << ", " << value << "}\n";
    }
    cout << endl;
    return 0;
}

Output:

{1, Java}
{2, Python}
{3, C++}
{4, Javascript}

Using for_each and lambda function to iterate through map in C++

In this method, we use the standard template library algorithm for_each to iterate through the map in C++. This loop will iterate on each element of the map and will call the callback provided. We can use a lambda function as callback here. The lambda function will get each element in a pair.
Code:

#include 
#include 
#include 
#include 
#include 
using namespace std;
int main(){
    map test = {{1, "Java",},
                            {2, "Python",},
                            {3, "C++",},
                            {4, "Javascript",},
                            };
    //creating a map iterator which points at the beginning of the map
    map:: iterator it=test.begin();
    //iterating over a map using lambda and for_each
    for_each(test.begin(), test.end(),[ ](pair element)
    {
        //accessing key from the elements
        int number=element.first;
        //accessing values from elements
        string word=element.second;
        cout << "{" << number << ", " << word << "}\n";
    });
    return 0;
}

Output:

{1, Java}
{2, Python}
{3, C++}
{4, Javascript}

Using simple ‘for loop’ using begin() and end() methods to iterate through map in C++

We can iterate through map by using the traditional for loop. We will use begin() and end() method to point at the beginning and ending positions respectively. This method will come at last position when it comes to readability.
Code:

#include 
#include 
#include 
#include 
#include 
using namespace std;
int main(){
    map test={{1, "Java",},
                           {2, "Python",},
                           {3, "C++",},
                           {4, "Javascript",},
                           };
    //accessing the beginning position of the map
    map :: iterator it=test.begin();
    //iteration using traditional for loop
    for(it=test.begin();it!=test.end();it++)
    {
        //accessing keys
        int number=it->first;
        //accessing values
        string word=it->second;
        //print the elements
        cout << "{" << number << ", " << word << "}\n";
    }
    return 0;
}

Output:

{1, Java}
{2, Python}
{3, C++}
{4, Javascript}

Using standard template library iterator and while loop to iterate through map in C++

We declare a header ‘’ to create an iterator of the map and then it will be initialized to the start position of the map. Then we can iterate over a map by incrementing the value of the iterator until it reaches the last position of the map.

Note: Map stores elements in a pair format, so each iterator points to the address of the pair.

Code:

#include 
#include 
#include 
#include 
#include 
using namespace std;
int main(){
map test={{1, "Java",},
                      {2, "Python",},
                      {3, "C++",},
                      {4, "Javascript",},
                      };
    //accessing the beginning position of the map
    map :: iterator it=test.begin();
    //iteration using while loop
    while(it != test.end())
    {
        //accessing keysint number=it->first;
        //accessing values
        int number=it->first;
        string word=it->second;
        //print the elements
        cout << "{" << number << ", " << word << "}\n";
        it++;
    }
    return 0;
}

Output:

{1, Java}
{2, Python}
{3, C++}
{4, Javascript}

Conclusion

In this article, we discussed five different ways to to iterate through map in C++. Some methods are supported by the latest versions of C++ only.
Happy Learning!

[social_share share_on="facebook,twitter,linkedin,whatsapp"][post_navigator in_same_term="true"]

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe to our newletter

Get quality tutorials to your inbox. Subscribe now.