Convert a map to a vector in C++
This is a tutorial on how to convert a map to a vector in C++. Maps are used to store key-value pairs in an ordered way. And so, to store these we need a vector of paired values.
Suppose we have a map of integer keys and integer values.
map<int,int> mp; //mp[key] =value mp[5] = 10; mp[8] = 2; mp[9] = 6;
To store these we need a vector of integer paired with an integer.
vector<pair<int,int>> vec; //this vec will store the map as: [[5,10] , [8,2] , [9,6]]
Now let us assume a map of string keys and integer values:
map<string,int> mp1; mp1["cake"] = 500; mp1["jam"] = 100; mp1["pizza"] =400;
To store these we need a vector of string paired with an integer.
vector<pair<string,int>> vec1; //this vec1 will store the map as: [["cake",500] , ["jam",100] , ["pizza",400]]
So let’s see how we can do this.
Map to vector
The idea to convert a map to vector is to iterate over the map and store the key-value pairs into vector one by one. This can be understood by the following examples:
Example1: Integer key and integer value
#include <bits/stdc++.h> using namespace std; int main() { map<int,int> mp; mp[5] = 10; mp[2] = 16; mp[9] = 7; mp[10] = 6; vector<pair<int,int>> vec; for(auto i : mp) //inserting map values into vector { vec.push_back(make_pair(i.first,i.second)); } for(auto j : vec) cout<<j.first<<" : "<<j.second<<endl; return 0; }
Output:
2 : 16 5 : 10 9 : 7 10 : 6
Exmaple2: String key and integer values
#include <bits/stdc++.h> using namespace std; int main() { map<string,int> mp1; mp1["cake"] = 500; mp1["jam"] = 100; mp1["pizza"] = 400; vector<pair<string,int>> vec1; for(auto i : mp1) //inserting map values into vector { vec1.push_back(make_pair(i.first,i.second)); } for(auto j : vec1) cout<<j.first<<" : "<<j.second<<endl; return 0; }
Output:
cake : 500 jam : 100 pizza : 400
That’s it on how to convert a map into a vector. I hope you understood it.
Leave a Reply