Piero V.

Invertire chiavi e valori nelle map (C++)

Mi è capitato di dover invertire le chiavi con i valori delle mappe, così ho creato questo template:

#include <map>
#include <vector>

template <class oldkey, class oldvalue>
typename std::map< oldvalue, std::vector<oldkey> > reverse_map(typename std::map<oldkey, oldvalue> the_map)
{
	std::map< oldvalue, std::vector<oldkey> > ret;

	typename std::map<oldkey, oldvalue>::iterator it;
	for(it = the_map.begin(); it != the_map.end(); it++) {
		ret[it->second].push_back(it->first);
	}

	return ret;
}

Era il primo template che scrivevo. Comunque sembra che funzioni, ma se c’è qualcosa che non va scrivete nei commenti (però per favore non mangiatemi 😊 ).

Come al solito per queste cose, rilascio questo codice nel pubblico dominio.