Implementing Multidimensional Map in C++
Multidimensional maps are used when we want to map a value to a combination of keys. The key can be of any data type, including those that are user-defined. Multidimensional maps are nested maps; that is, they map a key to another map, which itself stores combinations of key values with corresponding mapped values.
Syntax:
// Creating a two-dimensional map: map< key_1_type, map< key_2_type, value_type> > object; // Creating an N-dimensional map: map< key_1_type, map< key_2_type, ... map< key_N_type, value_type> > > object;
Example 1:
// C++14 code to implement two-dimensional map #include <bits/stdc++.h> using namespace std; int main() { // Two-dimensional key map< int , map< int , int > > m; // For accessing outer map map< int , map< int , int > >::iterator itr; // For accessing inner map map< int , int >::iterator ptr; for ( int i = 0; i < 2; i++) { for ( int j = 0; j < 2; j++) { m[i][j] = i + j; } } for ( int i = 0; i < 2; i++) { for ( int j = 0; j < 2; j++) { // Accessing through array subscript cout << "First key is " << i << " And second key is " << j << " And value is " << m[i][j] << endl; } } cout << "\nNow accessing map though iterator \n\n" ; for (itr = m.begin(); itr != m.end(); itr++) { for (ptr = itr->second.begin(); ptr != itr->second.end(); ptr++) { cout << "First key is " << itr->first << " And second key is " << ptr->first << " And value is " << ptr->second << endl; } } } |
Output:
First key is 0 And second key is 0 And value is 0 First key is 0 And second key is 1 And value is 1 First key is 1 And second key is 0 And value is 1 First key is 1 And second key is 1 And value is 2 Now accessing map though iterator First key is 0 And second key is 0 And value is 0 First key is 0 And second key is 1 And value is 1 First key is 1 And second key is 0 And value is 1 First key is 1 And second key is 1 And value is 2
Example 2:
// C++14 code to implement two-dimensional map // and inserting value through insert() #include <bits/stdc++.h> using namespace std; int main() { // First key type is a string map<string, map< int , int > > m; map<string, map< int , int > >::iterator itr; map< int , int >::iterator ptr; m.insert(make_pair( "Noob" , map< int , int >())); m[ "Noob" ].insert(make_pair(0, 5)); m.insert(make_pair( "Geek" , map< int , int >())); m[ "Geek" ].insert(make_pair(1, 10)); m.insert(make_pair( "Geek" , map< int , int >())); m[ "Geek" ].insert(make_pair(2, 20)); for (itr = m.begin(); itr != m.end(); itr++) { for (ptr = itr->second.begin(); ptr != itr->second.end(); ptr++) { cout << "First key is " << itr->first << " And second key is " << ptr->first << " And value is " << ptr->second << endl; } } } |
Output:
First key is Geek And second key is 1 And value is 10 First key is Geek And second key is 2 And value is 20 First key is Noob And second key is 0 And value is 5
Contact Us