Re: Resorting a map (copying a map to another with different Compare)
So to clarify what I'm after is something that does this, but is
generic to different depths and map types:
#include <map>
#include <iostream>
using namespace std;
class more {
public:
inline bool operator()(const string &k1,const string &k2) const {
return k1 > k2;
}
};
void copy_map(map<string,map<string,string> > &m1,
map<string,map<string,string,more>,more> &m2) {
map<string,map<string,string> >::iterator i = m1.begin();
for(;i != m1.end();++i) {
map<string,string>::iterator i2 = (*i).second.begin();
for(;i2 != (*i).second.end();++i2) {
m2[(*i).first][(*i2).first] = (*i2).second;
}
}
}
int main() {
map<string,map<string,string> > m1;
map<string,map<string,string,more>,more> m2;
map<string,string> m3 = map<string,string>();
m3["1thing"] = "3343";
m3["2thing"] = "943";
m3["3thing"] = "23343";
m1["stuff"] = m3;
m1["astuff"] = m3;
m1["321"] = m3;
m1["432"] = m3;
m1["12323"] = m3;
m1["123"] = m3;
m1["1"] = m3;
copy_map(m1,m2);
map<string,map<string,string,more>,more>::iterator i = m2.begin();
for(;i != m2.end();++i) {
map<string,string,more>::iterator i2 = (*i).second.begin();
for(;i2 != (*i).second.end();++i2) {
std::cout << i->first << " " << i2->first << " val: " << m2[i-
first][i2->first] << std::endl;
}
}
}