#include <algorithm>
#include <functional>
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
map<string, int, function<bool(const string&, const string&)>> myMap([ordering = { "dog", "cat", "mouse", "elephant" }](const auto& lhs, const auto& rhs) { return find(cbegin(ordering), cend(ordering), lhs) < find(cbegin(ordering), cend(ordering), rhs); });
myMap["cat"s] = 1;
myMap["dog"s] = 2;
myMap["elephant"s] = 3;
myMap["mouse"s] = 4;
myMap["rhino"s] = 5;
for (auto& i : myMap) {
cout << i.first << ' ' << i.second << endl;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCW1hcDxzdHJpbmcsIGludCwgZnVuY3Rpb248Ym9vbChjb25zdCBzdHJpbmcmLCBjb25zdCBzdHJpbmcmKT4+IG15TWFwKFtvcmRlcmluZyA9IHsgImRvZyIsICJjYXQiLCAibW91c2UiLCAiZWxlcGhhbnQiIH1dKGNvbnN0IGF1dG8mIGxocywgY29uc3QgYXV0byYgcmhzKSB7IHJldHVybiBmaW5kKGNiZWdpbihvcmRlcmluZyksIGNlbmQob3JkZXJpbmcpLCBsaHMpIDwgZmluZChjYmVnaW4ob3JkZXJpbmcpLCBjZW5kKG9yZGVyaW5nKSwgcmhzKTsgfSk7CgoJbXlNYXBbImNhdCJzXSA9IDE7CglteU1hcFsiZG9nInNdID0gMjsKCW15TWFwWyJlbGVwaGFudCJzXSA9IDM7CglteU1hcFsibW91c2Uic10gPSA0OwoJbXlNYXBbInJoaW5vInNdID0gNTsKCglmb3IgKGF1dG8mIGkgOiBteU1hcCkgewoJCWNvdXQgPDwgaS5maXJzdCA8PCAnICcgPDwgaS5zZWNvbmQgPDwgZW5kbDsKCX0KfQ==