#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <algorithm>
const std::vector<std::string> ordering {"dog", "cat", "mouse", "elephant"};
struct cmp
{
bool operator()(const std::string& lhs, const std::string& rhs)
{
return (std::find(ordering.begin(), ordering.end(), lhs) <
std::find(ordering.begin(), ordering.end(), rhs));
}
};
using MyMap = std::map<std::string, int, cmp>;
int main()
{
MyMap a;
a["elephant"] = 10;
a["mouse"]= 20;
for ( auto& item : a )
{
std::cout << item.first << " " << item.second << std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG9yZGVyaW5nIHsiZG9nIiwgImNhdCIsICJtb3VzZSIsICJlbGVwaGFudCJ9OwoKc3RydWN0IGNtcAp7CiAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnN0cmluZyYgbGhzLCBjb25zdCBzdGQ6OnN0cmluZyYgcmhzKQogICB7CiAgICAgIHJldHVybiAoc3RkOjpmaW5kKG9yZGVyaW5nLmJlZ2luKCksIG9yZGVyaW5nLmVuZCgpLCBsaHMpIDwKICAgICAgICAgICAgICBzdGQ6OmZpbmQob3JkZXJpbmcuYmVnaW4oKSwgb3JkZXJpbmcuZW5kKCksIHJocykpOwogICB9Cn07Cgp1c2luZyBNeU1hcCA9IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBpbnQsIGNtcD47CgppbnQgbWFpbigpCnsKICAgTXlNYXAgYTsKICAgYVsiZWxlcGhhbnQiXSA9IDEwOwogICBhWyJtb3VzZSJdPSAyMDsKICAgZm9yICggYXV0byYgaXRlbSA6IGEgKQogICB7CiAgICAgIHN0ZDo6Y291dCA8PCBpdGVtLmZpcnN0IDw8ICIgIiA8PCBpdGVtLnNlY29uZCA8PCBzdGQ6OmVuZGw7CiAgIH0KfQo=