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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
        }
    }
}

chevron_right


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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
        }
    }
}

chevron_right


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



My Personal Notes arrow_drop_up

A fallen star which will rise again

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : jacksonthall22

Article Tags :

3


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.