Flip map key-value pair

Richard picture Richard · Nov 30, 2011 · Viewed 14.2k times · Source

I have a map. I want to flip the key-value so that it not becomes map. So basically the value of the first map becomes the key of the second map. How do i do this?

Example map:

1 - 1.0
2 - 2.0

After flip

1.0 - 1
2.0 - 2

Answer

Seth Carnegie picture Seth Carnegie · Nov 30, 2011

The most straightforward way (that I know of) is to create a new map with the types flipped, and iterate the old one and add each key-value pair in reverse.

For example,

map<int, float> if_map;

// insert some items into if_map
if_map[1] = 43.11;
if_map[44] = -13421.438;

map<float, int> reversed;

for (map<int, float>::iterator i = if_map.begin(); i != if_map.end(); ++i)
    reversed[i->second] = i->first;