#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <algorithm>
using namespace std;
// create vector holding desired ordering
vector<string> order({ "a", "d", "i", "n", "ns", "ne", "vl", "rr" });
// create sort function for map
struct my_comparator {
bool operator()(const string &s1, const string &s2) {
// find() - it.begin() gives you the index number.
int a = find(order.begin(), order.end(), s1) - order.begin();
int b = find(order.begin(), order.end(), s2) - order.begin();
return a < b; // lower index < higher index
}
};
int main() {
// create the map
map<string,string, my_comparator> MyMap = { { "a","legato" }, { "i","3" }, { "vl","3" }, { "rr","2" } };
// output map
for (auto& it : MyMap) cout << it.first << "=" << it.second << " ";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gY3JlYXRlIHZlY3RvciBob2xkaW5nIGRlc2lyZWQgb3JkZXJpbmcKdmVjdG9yPHN0cmluZz4gb3JkZXIoeyAiYSIsICJkIiwgImkiLCAibiIsICJucyIsICJuZSIsICJ2bCIsICJyciIgfSk7CgovLyBjcmVhdGUgc29ydCBmdW5jdGlvbiBmb3IgbWFwICAgCnN0cnVjdCBteV9jb21wYXJhdG9yIHsKICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBzdHJpbmcgJnMxLCBjb25zdCBzdHJpbmcgJnMyKSB7CiAgICAgICAgLy8gZmluZCgpIC0gaXQuYmVnaW4oKSBnaXZlcyB5b3UgdGhlIGluZGV4IG51bWJlci4gCgkgICAgaW50IGEgPSBmaW5kKG9yZGVyLmJlZ2luKCksIG9yZGVyLmVuZCgpLCBzMSkgLSBvcmRlci5iZWdpbigpOwoJCWludCBiID0gZmluZChvcmRlci5iZWdpbigpLCBvcmRlci5lbmQoKSwgczIpIC0gb3JkZXIuYmVnaW4oKTsKCQlyZXR1cm4gYSA8IGI7IC8vIGxvd2VyIGluZGV4IDwgaGlnaGVyIGluZGV4CiAgICB9Cn07CgppbnQgbWFpbigpIHsKCS8vIGNyZWF0ZSB0aGUgbWFwCiAgICBtYXA8c3RyaW5nLHN0cmluZywgbXlfY29tcGFyYXRvcj4gTXlNYXAgPSB7IHsgImEiLCJsZWdhdG8iIH0sIHsgImkiLCIzIiB9LCB7ICJ2bCIsIjMiIH0sIHsgInJyIiwiMiIgfSB9OwoKICAgIC8vIG91dHB1dCBtYXAKICAgIGZvciAoYXV0byYgaXQgOiBNeU1hcCkgY291dCA8PCBpdC5maXJzdCA8PCAiPSIgPDwgaXQuc2Vjb25kIDw8ICIgICI7CiAgICAgICAgCiAgICByZXR1cm4gMDsKfQ==