Implementing Multidimensional Map in C++
Last Updated :
12 Jul, 2025
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:
CPP14
// 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:
CPP14
// 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
Explore
C++ Basics
Core Concepts
OOP in C++
Standard Template Library(STL)
Practice & Problems