# How to Create a Map with Vectors as Keys and Sets as Values?

Last Updated : 16 Feb, 2024

In C++, maps, vectors, and sets all are the data storage containers that are provided by the C++ STL. We can nest these containers to create a more complex data structure. In this article, we will explore how to create a Map with vectors as keys and sets as values in C++.

Example

```Input:
myVector1 = {1, 2, 3}
myVector2 = {4, 5, 6}
myVector3 = {7, 8, 9}
mySet1 = {"Geek", "for", "Geeks"}
mySet2 = {"C","C++","Java"}
mySet3 = {"AI","ML","Data Science"}

Output:
myMap = { {{1, 2, 3}: {"Geek", "for", "Geeks"}},
{{4, 5, 6}: {"C","C++","Java"}},
{{7, 8, 9}: {"AI","ML","Data Science"}} }```

## Map with Vectors as Keys and Sets as Values in C++

To create a map with vectors as keys and sets as values, we first declare the map of type as shown below:

Syntax:

`Map<vector<data_Type>, set<data_Type>> myMap`

The we can insert the set with its vector one by one.

## C++

 `// C++ Program to show how to Create a Map with Vectors as ` `// Keys and Sets as Values ` `#include ` `#include ` `#include ` `#include ` ` `  `using` `namespace` `std; ` ` `  `int` `main() ` `{ ` ` `  `    ``// Initialzie  the map with vector keys and set values ` `    ``map, set > myMap; ` ` `  `    ``// Create the vectors which will act as keys in the map ` `    ``vector<``int``> v1 = { 1, 2, 3 }; ` `    ``vector<``int``> v2 = { 4, 5, 6 }; ` `    ``vector<``int``> v3 = { 7, 8, 9 }; ` ` `  `    ``// Create the sets which will act as values in the map ` `    ``set s1 = { ``"Geek"``, ``"for"``, ``"Geeks"` `}; ` `    ``set s2 = { ``"C"``, ``"C++"``, ``"Java"` `}; ` `    ``set s3 = { ``"AI"``, ``"ML"``, ``"Data Science"` `}; ` ` `  `    ``// Insert key-value pairs into the map ` `    ``myMap[v1] = s1; ` `    ``myMap[v2] = s2; ` `    ``myMap[v3] = s3; ` ` `  `    ``// Print key-value pairs of the map ` `    ``for` `(``const` `auto``& pair : myMap) { ` `        ``cout << ``"Key: "``; ` `        ``for` `(``int` `key : pair.first) { ` `            ``cout << key << ``" "``; ` `        ``} ` `        ``cout << ``" Value: {"``; ` `        ``for` `(``const` `string& value : pair.second) { ` `            ``cout << value << ``", "``; ` `        ``} ` `        ``cout << ``"}"` `<< endl; ` `    ``} ` ` `  `    ``return` `0; ` `}`

Output

```Key: 1 2 3  Value: {Geek, Geeks, for, }
Key: 4 5 6  Value: {C, C++, Java, }
Key: 7 8 9  Value: {AI, Data Science, ML, }```

Time Complexity: O(N) where N is the number of pairs in the map.

Auxiliary Space: O(N*(M+K)) where N is the number of key-value pairs in the map , M is the average size of the vectors used as keys and K is the average size of the sets uses as values.