In this article we will discuss the different ways to initialize an unordered_map.
unordered_map provides different overloaded constructors. We will use some of them to initialize an unordered_set in 3 different ways i.e.
- Initializing through an initializer_list
- Initializing through a iterable range.
- Initializing through an another map.
Lets see them in detail,
Initializing an unordered_map using initializer_list
unordered_map provides an over loaded constructor that can accept an initializer_list as an argument and can initialize  an unordered_map.
Let’s create an unordered_map of key type string and value type int. While creation it will initialized with 3 elements through an initializer_list i.e.
Frequently Asked:
// Initialize an unordered_map through initializer_list std::unordered_map<std::string, int> wordMap({ { "First", 1 }, { "Second", 2 }, { "Third", 3 } });
Initializing an unordered_map through a range
We can also initialize an unordered_map through a range of std::pair elements i.e
// Initialize an unordered_map through another range of elements of type std::pair std::unordered_map<std::string, int> wordMap_2(wordMap.begin(), wordMap.end());
Initializing an unordered_map through other unordered_map
We can also initialize an unordered_map through an existing unordered_map i.e.
// Initialize an unordered_map through other unordered_map std::unordered_map<std::string, int> wordMap_3(wordMap);
Complete working example, is as follows,
#include <iostream> #include <unordered_map> #include <string> int main() { // Initialize an unordered_map through initializer_list std::unordered_map<std::string, int> wordMap( { { "First", 1 }, { "Second", 2 }, { "Third", 3 } }); // Iterate over an unordered_map and display elements for (std::pair<std::string, int> element : wordMap) std::cout << element.first << " :: " << element.second << std::endl; std::cout << "*******************" << std::endl; // Initialize an unordered_map through another range of elements of type std::pair std::unordered_map<std::string, int> wordMap_2(wordMap.begin(), wordMap.end()); // Iterate over an unordered_map and display elements for (std::pair<std::string, int> element : wordMap_2) std::cout << element.first << " :: " << element.second << std::endl; std::cout << "*******************" << std::endl; // Initialize an unordered_map through other unordered_map std::unordered_map<std::string, int> wordMap_3(wordMap); // Iterate over an unordered_map and display elements for (std::pair<std::string, int> element : wordMap_3) std::cout << element.first << " :: " << element.second << std::endl; return 0; }
Ouput:
Best Resources to Learn C++:
Third :: 3 First :: 1 Second :: 2 ******************* Second :: 2 Third :: 3 First :: 1 ******************* Third :: 3 First :: 1 Second :: 2