Iterate over map c++: In the previous article, we have discussed about C++ : Map Tutorial -Part 2: Map and External Sorting Criteria / Comparator. Let us learn how to Iterate Over a Map in C++ Program.
Iterate Over a Map
Iterate through a map c++: In this article we will discuss 3 different ways to iterate over a map.
By using STL Iterator :
How to iterate through a map c++: Create an iterator of of std::map first and then initialize it to the beginning of the map. Then by incrementing the iterator upto last iterate over the map.
std::map<std::string, int>::iterator it = sampleMap.begin();
To access key from iterator
it->first
To access value from iterator
it->second
Let’s see the below program to understand it clearly.
#include <iostream>
#include <map>
#include <string>
#include <iterator>
#include <algorithm>
int main()
{
std::map<std::string, int> sampleMap;
// Inserting Element in map
sampleMap.insert(std::pair<std::string, int>("A", 1));
sampleMap.insert(std::pair<std::string, int>("B", 2));
sampleMap.insert(std::pair<std::string, int>("C", 3));
sampleMap.insert(std::pair<std::string, int>("D", 4));
// Creating a map iterator
// iterator pointing to beginning of map
std::map<std::string, int>::iterator it = sampleMap.begin();
// Iterating over the map using Iterator till end of map.
while (it != sampleMap.end())
{
// key accessed.
std::string word = it->first;
// Avalue accessed.
int count = it->second;
std::cout << word << " :: " << count << std::endl;
// Incrementing the Iterator to point to next element
it++;
}
return 0;
}
Output : A :: 1 B :: 2 C :: 3 D :: 4
By using range based for loop :
Iterate over a map c++: Using range based for loop also we can iterate over the map.
Let’s see the below program to understand it clearly.
#include <iostream>
#include <map>
#include <string>
#include <iterator>
#include <algorithm>
int main()
{
std::map<std::string, int> sampleMap;
// Inserting Element in map
sampleMap.insert(std::pair<std::string, int>("A", 1));
sampleMap.insert(std::pair<std::string, int>("B", 2));
sampleMap.insert(std::pair<std::string, int>("C", 3));
sampleMap.insert(std::pair<std::string, int>("D", 4));
// Creating a map iterator
// iterator pointing to beginning of map
std::map<std::string, int>::iterator it = sampleMap.begin();
// Iterating over the map using Iterator till end of map.
for (std::pair<std::string, int> item : sampleMap) {
// key accessed.
std::string word = item.first;
// Avalue accessed.
int count = item.second;
std::cout << word << " :: " << count << std::endl;
}
return 0;
}
Output : A :: 1 B :: 2 C :: 3 D :: 4
By using std::for_each and lambda function :
How to iterate through a map in c++: Using for each loop and lambda function also we can iterate over the map. Let’s see the below program to understand how we can achieve this.
#include <iostream>
#include <map>
#include <string>
#include <iterator>
#include <algorithm>
int main()
{
std::map<std::string, int> sampleMap;
// Inserting Element in map
sampleMap.insert(std::pair<std::string, int>("A", 1));
sampleMap.insert(std::pair<std::string, int>("B", 2));
sampleMap.insert(std::pair<std::string, int>("C", 3));
sampleMap.insert(std::pair<std::string, int>("D", 4));
// Creating a map iterator
// iterator pointing to beginning of map
std::map<std::string, int>::iterator it = sampleMap.begin();
// Iterating over the map using Iterator till end of map.
std::for_each(sampleMap.begin(), sampleMap.end(),
[](std::pair<std::string, int> element){
// key accessed.
std::string word = element.first;
// Avalue accessed.
int count = element.second;
std::cout<<word<<" :: "<<count<<std::endl;
});
return 0;
}
Output : A :: 1 B :: 2 C :: 3 D :: 4