Related Articles
Implementing Multidimensional Map in C++
• Difficulty Level : Hard
• Last Updated : 30 Apr, 2020

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 ``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 ``using` `namespace` `std;`` ` `int` `main()``{`` ` `    ``// First key type is a string``    ``map > m;`` ` `    ``map >::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
```
Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for the language and STL. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up