Open In App

Vector of Unordered Maps in C++ with Examples

Last Updated : 29 Nov, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

Vector:

Vector: It is the same as dynamic arrays with the ability to resize itself automatically when an element is inserted or deleted, with their storage being handled automatically by the container. Vector elements are placed in contiguous storage so that they can be accessed and traversed using iterators.

Some of the functions used with vector:

  • begin(): It returns an iterator pointing to the first element in the vector
  • end(): It returns an iterator pointing to the theoretical element that follows the last element in the vector
  • size(): It returns the number of elements in the vector.

Unordered Map:

Unordered_map is an associated container that stores elements formed by the combination of key-value and a mapped value. The key value is used to uniquely identify the element and the mapped value is the content associated with the key. Both key and value can be of any type predefined or user-defined. Elements in an unordered map are not arranged in any particular order.  Internally, an unordered map is implemented using Hash Table.

Some of the functions used with unordered map:

  • at(): This function in C++ unordered_map returns the reference to the value with the element as key k.
  • begin(): Returns an iterator pointing to the first element in the container in the unordered_map container
  • end(): Returns an iterator pointing to the position past the last element in the container in the unordered_map container

This article focuses on how the vector of unordered maps can be used in C++. Vector of unordered maps can be quite useful while designing complex data structures.

Below is the implementation using a vector of unordered maps:

 Example 1:

C++




// C++ program to illustrate the working
// of vector of unordered maps
#include <bits/stdc++.h>
using namespace std;
  
// Function to print vector elements
void print(vector<unordered_map<int, int> >& vect)
{
  
    cout << "vector : \n";
    for (int i = 0; i < (int)vect.size(); i++) {
  
        // Each element of the vector is a unordered map
        unordered_map<int, int> unorderedMap = vect[i];
  
        cout << "unordered map : ";
        cout << "[  ";
  
        // Print unordered map elements
        for (auto it = unorderedMap.begin();
             it != unorderedMap.end(); it++) {
            cout << it->first << ':' << it->second << "  ";
        }
  
        cout << "]\n";
    }
}
  
// Driver Code
int main()
{
  
    // Declaring a vector of unordered maps
    vector<unordered_map<int, int> > vect;
  
    // Declaring a unordered map
    unordered_map<int, int> unorderedMap1;
  
    // Hashing values
    unorderedMap1[2] = 1;
    unorderedMap1[4] = 7;
    unorderedMap1[6] = 10;
  
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap1);
  
    // Declaring another unordered map
    unordered_map<int, int> unorderedMap2;
  
    // Hashing values
    unorderedMap2[14] = 11;
    unorderedMap2[15] = 21;
    unorderedMap2[6] = 34;
  
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap2);
  
    // Declaring another unordered map
    unordered_map<int, int> unorderedMap3;
  
    // Hashing values
    unorderedMap3[7] = 277;
    unorderedMap3[18] = 188;
    unorderedMap3[9] = 399;
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap3);
  
    // Declaring another unordered map
    unordered_map<int, int> unorderedMap4;
  
    // Hashing values
    unorderedMap4[121] = 88;
    unorderedMap4[97] = 99;
    unorderedMap4[197] = 199;
  
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap4);
  
    print(vect);
    return 0;
}


Output

vector : 
unordered map : [  6:10  2:1  4:7  ]
unordered map : [  6:34  14:11  15:21  ]
unordered map : [  9:399  7:277  18:188  ]
unordered map : [  197:199  121:88  97:99  ]

Example 2:

C++




// C++ program to illustrate the working
// of vector of unordered maps
#include <bits/stdc++.h>
using namespace std;
  
// Function to print vector elements
void print(vector<unordered_map<int, string> >& vect)
{
  
    cout << "vector : \n";
    for (int i = 0; i < (int)vect.size(); i++) {
        // Each element of the vector is a unordered map
        unordered_map<int, string> unorderedMap = vect[i];
  
        cout << "unordered map : ";
        cout << "[  ";
  
        // Print unordered map elements
        for (auto it = unorderedMap.begin();
             it != unorderedMap.end(); it++) {
            cout << it->first << ':' << it->second << "  ";
        }
  
        cout << "]\n";
    }
}
  
// Driver Code
int main()
{
  
    // Declaring a vector of unordered maps
    vector<unordered_map<int, string> > vect;
  
    // Declaring a unordered map
    unordered_map<int, string> unorderedMap1;
  
    // Hashing values
    unorderedMap1[11] = "Geeks";
    unorderedMap1[23] = "for";
    unorderedMap1[32] = "Geeks";
  
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap1);
  
    // Declaring another unordered map
    unordered_map<int, string> unorderedMap2;
  
    // Hashing values
    unorderedMap2[12] = "Python";
    unorderedMap2[32] = "Java";
    unorderedMap2[73] = "C++";
  
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap2);
  
    // Declaring another unordered map
    unordered_map<int, string> unorderedMap3;
  
    // Hashing values
    unorderedMap3[11] = "PHP";
    unorderedMap3[2] = "C#";
    unorderedMap3[35] = "Assembly";
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap3);
  
    // Declaring another unordered map
    unordered_map<int, string> unorderedMap4;
  
    // Hashing values
    unorderedMap4[14] = "C";
    unorderedMap4[27] = "Javascript";
    unorderedMap4[54] = "Swift";
  
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap4);
  
    print(vect);
    return 0;
}


Output

vector : 
unordered map : [  32:Geeks  11:Geeks  23:for  ]
unordered map : [  73:C++  12:Python  32:Java  ]
unordered map : [  35:Assembly  11:PHP  2:C#  ]
unordered map : [  54:Swift  14:C  27:Javascript  ]

Example 3:

C++




// C++ program to illustrate the working
// of vector of unordered maps
#include <bits/stdc++.h>
using namespace std;
  
// Function to print vector elements
void print(vector<unordered_map<int, char> >& vect)
{
  
    cout << "vector : \n";
    for (int i = 0; i < (int)vect.size(); i++) {
        // Each element of the vector is a unordered map
        unordered_map<int, char> unorderedMap = vect[i];
  
        cout << "unordered map : ";
        cout << "[  ";
  
        // Print unordered map elements
        for (auto it = unorderedMap.begin();
             it != unorderedMap.end(); it++) {
            cout << it->first << ':' << it->second << "  ";
        }
  
        cout << "]\n";
    }
}
  
// Driver Code
int main()
{
  
    // Declaring a vector of unordered maps
    vector<unordered_map<int, char> > vect;
  
    // Declaring a unordered map
    unordered_map<int, char> unorderedMap1;
  
    // Hashing values
    unorderedMap1[2] = 'G';
    unorderedMap1[7] = 'e';
    unorderedMap1[12] = 'e';
    unorderedMap1[14] = 'k';
    unorderedMap1[21] = 's';
  
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap1);
  
    // Declaring another unordered map
    unordered_map<int, char> unorderedMap2;
  
    // Hashing values
    unorderedMap2[13] = 'J';
    unorderedMap2[15] = 'a';
    unorderedMap2[24] = 'v';
    unorderedMap2[27] = 'a';
  
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap2);
  
    // Declaring another unordered map
    unordered_map<int, char> unorderedMap3;
  
    // Hashing values
    unorderedMap3[33] = 'P';
    unorderedMap3[37] = 'y';
    unorderedMap3[41] = 't';
    unorderedMap3[19] = 'h';
    unorderedMap3[43] = 'o';
    unorderedMap3[53] = 'o';
  
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap3);
  
    // Declaring another unordered map
    unordered_map<int, char> unorderedMap4;
  
    // Hashing values
    unorderedMap4[15] = 's';
    unorderedMap4[53] = 'w';
    unorderedMap4[16] = 'i';
    unorderedMap4[23] = 'f';
    unorderedMap4[27] = 't';
  
    // Push back the unordered map in the vector
    vect.push_back(unorderedMap4);
  
    print(vect);
    return 0;
}


Output

vector : 
unordered map : [  12:e  2:G  21:s  14:k  7:e  ]
unordered map : [  24:v  27:a  13:J  15:a  ]
unordered map : [  53:o  43:o  41:t  19:h  33:P  37:y  ]
unordered map : [  27:t  23:f  16:i  15:s  53:w  ]


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads