#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 vector of pairs
bool comparator(const pair<string, string> &s1, const pair<string, string> &s2) {
// find() - it.begin() gives you the index number.
int a = find(order.begin(), order.end(), s1.first) - order.begin();
int b = find(order.begin(), order.end(), s2.first) - order.begin();
return a < b; // lower index < higher index
};
int main() {
// create the map
map<string,string> MyMap = { { "a","legato" }, { "vl","3" }, {"i", "3"}, { "rr","2" } };
// convert map into vector of pairs
vector<pair<string,string>> vp;
for (auto& it : MyMap) vp.push_back({ it.first, it.second });
// sort the vector
sort(vp.begin(), vp.end(), comparator);
// put the vector pairs into a string format
for (auto& it : vp) cout << it.first << "=" << it.second << " ";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gY3JlYXRlIHZlY3RvciBob2xkaW5nIGRlc2lyZWQgb3JkZXJpbmcKdmVjdG9yPHN0cmluZz4gb3JkZXIoeyAiYSIsICJkIiwgImkiLCAibiIsICJucyIsICJuZSIsICJ2bCIsICJyciIgfSk7CgovLyBjcmVhdGUgc29ydCBmdW5jdGlvbiBmb3IgdmVjdG9yIG9mIHBhaXJzCmJvb2wgY29tcGFyYXRvcihjb25zdCBwYWlyPHN0cmluZywgc3RyaW5nPiAmczEsIGNvbnN0IHBhaXI8c3RyaW5nLCBzdHJpbmc+ICZzMikgewogICAgLy8gZmluZCgpIC0gaXQuYmVnaW4oKSBnaXZlcyB5b3UgdGhlIGluZGV4IG51bWJlci4gCiAgICBpbnQgYSA9IGZpbmQob3JkZXIuYmVnaW4oKSwgb3JkZXIuZW5kKCksIHMxLmZpcnN0KSAtIG9yZGVyLmJlZ2luKCk7CiAgICBpbnQgYiA9IGZpbmQob3JkZXIuYmVnaW4oKSwgb3JkZXIuZW5kKCksIHMyLmZpcnN0KSAtIG9yZGVyLmJlZ2luKCk7CiAgICByZXR1cm4gYSA8IGI7IC8vIGxvd2VyIGluZGV4IDwgaGlnaGVyIGluZGV4Cn07CgppbnQgbWFpbigpIHsKICAgIC8vIGNyZWF0ZSB0aGUgbWFwCiAgICBtYXA8c3RyaW5nLHN0cmluZz4gTXlNYXAgPSB7IHsgImEiLCJsZWdhdG8iIH0sIHsgInZsIiwiMyIgfSwgeyJpIiwgIjMifSwgeyAicnIiLCIyIiB9IH07CgogICAgLy8gY29udmVydCBtYXAgaW50byB2ZWN0b3Igb2YgcGFpcnMKICAgIHZlY3RvcjxwYWlyPHN0cmluZyxzdHJpbmc+PiB2cDsKICAgIGZvciAoYXV0byYgaXQgOiBNeU1hcCkgdnAucHVzaF9iYWNrKHsgaXQuZmlyc3QsIGl0LnNlY29uZCB9KTsKCiAgICAvLyBzb3J0IHRoZSB2ZWN0b3IKICAgIHNvcnQodnAuYmVnaW4oKSwgdnAuZW5kKCksIGNvbXBhcmF0b3IpOwoKICAgIC8vIHB1dCB0aGUgdmVjdG9yIHBhaXJzIGludG8gYSBzdHJpbmcgZm9ybWF0CiAgICBmb3IgKGF1dG8mIGl0IDogdnApIGNvdXQgPDwgaXQuZmlyc3QgPDwgIj0iIDw8IGl0LnNlY29uZCA8PCAiICI7CgogICAgcmV0dXJuIDA7Cn0=