Implementing Multidimensional Map in C++

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

jacksonthall22
cpp-map-functions
C++ Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
return 0 vs return 1 in C++
cout in C++
Passing a function as a parameter in C++
Const keyword in C++
C++ Keywords
Program to count Number of connected components in an undirected graph
Program to implement Singly Linked List in C++ using class
How to sort an Array in descending order using STL in C++?
Setting up Sublime Text for C++ Competitive Programming Environment
Why it is important to write "using namespace std" in C++ program?