C Programs If you really want to learn programming then do attempt C programs before watching its solution. Do not give up too early, give time to yourself. When program is developed, you should dry run it to check its. How can we map keys to values in a C# program? The C# language has no built-in map type. But it offers a powerful Dictionary type, which we use to map things.
This post will discuss how to print out all keys and values from a std::map
or std::unordered_map
in C++.
Maps are associative containers whose elements are key-value pairs. Using a map, we can associate a value with some key and later retrieve that value using the same key. The retrieval operation in a map is very fast. There are several ways in C++ to print out all pairs present on the map:
1. Using range-based for-loop
The recommended approach in C++11 is to use the new range-based for-loops for printing the map pairs, as shown below:
2 4 6 8 10 12 14 16 18 20 22 | #include <unordered_map> template<typenameK,typenameV> { std::cout<<'{'<<pair.first<<': '<<pair.second<<'}n'; } intmain() std::unordered_map<int,char>m={ {2,'B'}, }; } |
Output:
{3: C}
{1: A}
{2: B}
2. Using std::for_each
function
Another simple solution is to use std::for_each
. It takes an iterator to the beginning and end of the map, and applies a specified function on every pair within that range. The specified function may be a unary function, a lambda expression, or an object of a class overloading the ()
operator.
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 | #include <unordered_map> { voidoperator()(conststd::pair<K,V>&p){ } voidprint(conststd::pair<K,V>&p){ } template<typenameK,typenameV> { std::for_each(m.begin(), [](conststd::pair<int,char>&p){ }); // or pass an object of a class overloading the ()operator // std::for_each(m.begin(), m.end(), print<K, V>); { {1,'A'}, {3,'C'} } |
Output:
{3: C}
{1: A}
{2: B}
3. Using Iterator
We can also use iterators to iterate a map and print its pairs. It is recommended to use the const_iterator
from C++11, as we’re not modifying the map pairs inside the for-loop.
2 4 6 8 10 12 14 16 18 20 22 | #include <unordered_map> template<typenameK,typenameV> { std::cout<<'{'<<(*it).first<<': '<<(*it).second<<'}n'; } intmain() std::unordered_map<int,char>m={ {2,'B'}, }; } |
Output:
{3: C}
{1: A}
{2: B}
4. Operator<< Overloading
C Program To Print World Map Without
To get std::cout
to accept the map object, we can overload the <<
operator to recognize an ostream object on the left and a map object on the right, as shown below:
C Program To Print World Map Online
2 4 6 8 10 12 14 16 18 20 22 24 | #include <unordered_map> template<typenameK,typenameV> conststd::unordered_map<K,V>&m){ os<<'{'<<p.first<<': '<<p.second<<'}n'; returnos; { {1,'A'}, {3,'C'} } |
Output:
{3: C}
{1: A}
{2: B}
C Program To Print World Map
That’s all about printing out all keys and values from a map in C++.