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.